1

这些是我迄今为止编写的测试。第一个断言通过了。第二个我得到错误:TypeError: undefined is not a function

/*global describe, it, assert */
App.rootElement = '#emberTestingDiv';

App.setupForTesting();
App.injectTestHelpers();

module('Integration Tests', {
  setup: function() {
    App.reset();
  }
});


// Tests

test('search terms?', function() {
  App.mainSearcher.params.q = 'our keywords';
  equal(App.mainSearcher.params.q, 'our keywords');
});

test('router?', function() {
  visit('/search?q=method&sort=patAssignorEarliestExDate%20desc');
  andThen(function(){
    equal(find('title').text(), 'method');
  });
});

我不确定我为什么会这样。我正在使用 grunt-contrib-qunit,所以我很好奇我是否在通过 grunt/npm 使用 Ember 应用程序设置 qunit 时做错了什么。

但我不认为是这样,因为第一个测试通过了。

我会很感激任何帮助。

谢谢!

编辑:

这是完整的错误

Died on test #1 at file:///Users/jwhite/Documents/workspace/uspto-aotw/front-end/test/spec/test.js:21:1: undefined is not a function
Source: TypeError: undefined is not a function

第 21 行是第二次测试的第一行:

test('router?', function() {
4

1 回答 1

1

我猜?第一次测试运行中的某些东西“取消设置”了全局test变量/方法。我的建议是使用 QUnit API 的完全限定版本:

/*global describe, it, assert */
App.rootElement = '#emberTestingDiv';

App.setupForTesting();
App.injectTestHelpers();

QUnit.module('Integration Tests', {   // qualified
  setup: function() {
    App.reset();
  }
});


// Tests

QUnit.test('search terms?', function(assert) {   // qualified (with `assert` arg)
  App.mainSearcher.params.q = 'our keywords';
  assert.equal(App.mainSearcher.params.q, 'our keywords');  // qualified
});

QUnit.test('router?', function(assert) {   // qualified (with `assert` arg)
  visit('/search?q=method&sort=patAssignorEarliestExDate%20desc');
  andThen(function(){
    assert.equal(find('title').text(), 'method');   // qualified
  });
});

如果可行,那么我的假设是正确的,但是我不知道在您的第一次测试运行中会发生这种情况,因为它实际上并没有做任何事情。我想它可能是 in 的东西App.reset(),但是为什么test()第一次定义呢?

无论如何......首先尝试合格的方法调用,可能是一个快速修复。

于 2014-10-29T13:06:34.333 回答