我正在尝试使用 QUnit 设置 ember.js 来编写集成测试。
按照http://emberjs.com/guides/testing/integration/上的指示,我有:
document.write('<div id="ember-testing-container"><div id="ember-testing"></div></div>');
App.rootElement = '#ember-testing';
App.setupForTesting();
App.injectTestHelpers();
module("Integration Tests", {
setup: function() {
App.reset();
}
});
test("root lists first page of posts", function(){
visit("/").then(function() {
equal(find(".post").length, 5, "The first page should have 5 posts");
// Assuming we know that 5 posts display per page and that there are more than 5 posts
});
});
但是,当我运行 QUnit 时,出现以下错误:
Assertion failed: You have turned on testing mode, which disabled the
run-loop's autorun. You will need to wrap any code with asynchronous
side-effects in an Ember.run
触发此断言错误是因为我在应用初始化程序中发出 http 请求以检查是否存在当前用户会话。如果没有有效用户,这将返回 401 错误。(如果我强制应用程序始终为此请求返回 200,则不会发生此断言错误,并且测试会按预期继续)。
我相信应用程序和 API 通过为无效用户返回 http 错误来正确运行,并且我不想更改为响应 200 只是为了让我的测试正常工作。我需要做什么才能让 ember 和 QUnit 处理 http 错误和断言?从我读过的内容来看,我需要用 包装一些东西Ember.run
,但我不知道是什么。