Javascript Ember.js&;QUnit:“;类型错误:对象#<;对象>;没有方法';getHandler'&引用;拜访时

Javascript Ember.js&;QUnit:“;类型错误:对象#<;对象>;没有方法';getHandler'&引用;拜访时,javascript,ember.js,Javascript,Ember.js,在测试中使用visit时出现错误: TypeError:Object#没有方法“getHandler” module("visit", { setup: function() { Ember.run(App, App.advanceReadiness); }, teardown: function() { App.reset(); } }); test("visit works", function () { expect(2); // this ge

在测试中使用visit时出现错误:

TypeError:Object#没有方法“getHandler”

module("visit", {
  setup: function() {
    Ember.run(App, App.advanceReadiness);
  },
  teardown: function() {
    App.reset();
  }
});

test("visit works", function () {
  expect(2);

  // this gets executed
  equal(1, 1);

  return visit("/").then(function() {
    // this doesn't
    equal(1, 1);
  });
});
产生的错误跟踪是:

Died on test #2     at eval (eval at <anonymous> (eval at <anonymous> (http://127.0.0.1:3000/javascripts/libs/jquery/jquery-1.8.0.min.js:2:14066)), <anonymous>:10:1)
    at eval (native)
    at eval (eval at <anonymous> (http://127.0.0.1:3000/javascripts/libs/jquery/jquery-1.8.0.min.js:2:14066), <anonymous>:2:14066)
    at Function.p.extend.globalEval (eval at <anonymous> (http://127.0.0.1:3000/javascripts/libs/jquery/jquery-1.8.0.min.js:2:14066), <anonymous>:2:14077)
    at p.ajaxSetup.converters.text script (eval at <anonymous> (http://127.0.0.1:3000/javascripts/libs/jquery/jquery-1.8.0.min.js:2:14066), <anonymous>:2:83767)
    at cC (eval at <anonymous> (http://127.0.0.1:3000/javascripts/libs/jquery/jquery-1.8.0.min.js:2:14066), <anonymous>:2:5874)
    at y (eval at <anonymous> (http://127.0.0.1:3000/javascripts/libs/jquery/jquery-1.8.0.min.js:2:14066), <anonymous>:2:79888)
    at d (eval at <anonymous> (http://127.0.0.1:3000/javascripts/libs/jquery/jquery-1.8.0.min.js:2:14066), <anonymous>:2:85578): Object #<Object> has no method 'getHandler'
Source:     
TypeError: Object #<Object> has no method 'getHandler'
    at generateHandlerInfos (eval at <anonymous> (eval at <anonymous> (http://127.0.0.1:3000/javascripts/libs/jquery/jquery-1.8.0.min.js:2:14066)), <anonymous>:25824:31)
    at performTransition (eval at <anonymous> (eval at <anonymous> (http://127.0.0.1:3000/javascripts/libs/jquery/jquery-1.8.0.min.js:2:14066)), <anonymous>:25758:30)
    at createURLTransition (eval at <anonymous> (eval at <anonymous> (http://127.0.0.1:3000/javascripts/libs/jquery/jquery-1.8.0.min.js:2:14066)), <anonymous>:25501:18)
    at doTransition (eval at <anonymous> (eval at <anonymous> (http://127.0.0.1:3000/javascripts/libs/jquery/jquery-1.8.0.min.js:2:14066)), <anonymous>:26067:20)
    at Object.Router.handleURL (eval at <anonymous> (eval at <anonymous> (http://127.0.0.1:3000/javascripts/libs/jquery/jquery-1.8.0.min.js:2:14066)), <anonymous>:25213:20)
    at Ember.Router.Ember.Object.extend._doTransition (eval at <anonymous> (eval at <anonymous> (http://127.0.0.1:3000/javascripts/libs/jquery/jquery-1.8.0.min.js:2:14066)), <anonymous>:26491:53)
    at Ember.Router.Ember.Object.extend.handleURL (eval at <anonymous> (eval at <anonymous> (http://127.0.0.1:3000/javascripts/libs/jquery/jquery-1.8.0.min.js:2:14066)), <anonymous>:26331:21)
    at Ember.Application.Ember.Namespace.extend.handleURL (eval at <anonymous> (eval at <anonymous> (http://127.0.0.1:3000/javascripts/libs/jquery/jquery-1.8.0.min.js:2:14066)), <anonymous>:30240:16)
    at Object.Backburner.run (eval at <anonymous> (eval at <anonymous> (http://127.0.0.1:3000/javascripts/libs/jquery/jquery-1.8.0.min.js:2:14066)), <anonymous>:4862:30)
    at Object.Ember.run (eval at <anonymous> (eval at <anonymous> (http://127.0.0.1:3000/javascripts/libs/jquery/jquery-1.8.0.min.js:2:14066)), <anonymous>:5200:30)
你应该去读书

使用最新的Ember,您无需运行
App.advanceReadiness
,只需在
teardown
中运行
App.reset
,在定义任何测试套件之前,您需要调用:

App.rootElement = '#qunit-fixtures';
App.setupForTesting();
App.injectTestHelpers();
一切都应该很好

让我知道下面的方法是否有效,如果有效,请给出一个我可以使用的jsbin;-)

编辑

我也不确定这会改变什么,但在他们的示例中,他们使用了
然后
而不是
然后

visit('/');
andThen(function(){ ... });

我需要补充的是,我正在使用Ajax调用加载我的Ember应用程序和测试代码。在检查新安装后,当将所有内容放入头部时,它可以正常工作,但是当使用Ajax获取它时,尽管在加载所有内容时手动加载并启动QUnit,但会发生此错误。因此,允许使用jQuery getScript加载Ember吗?advanceReadiness是什么?是否定义了位于根的路由,如果是的话,关联的路由/控制器/模型是什么样子的?根据Ember网站:“默认情况下,调用Ember.Application.create()将通过调用Ember.Application.initialize()方法自动初始化应用程序。如果需要延迟初始化,您可以调用应用程序的延迟准备()方法。当您准备好初始化应用程序时,请调用其AdvanceRadiness()方法。“
visit('/');
andThen(function(){ ... });