您如何设置测试以使用新的 Ember 测试助手,例如visit
或find
. 我有一些困难使它工作。
我尝试了以下方法:
在创建命名空间之前:
Ember.testing = true
在我的规范中:
App.setupForTesting()
App.injectTestHelpers()
然后我收到一条消息,说我需要用 Ember.run 包装任何异步代码,所以我这样做了,但是我的夹具数据(模拟 GET 请求)不知何故无法访问,所以我无法为它们设置数据。
你想通了吗?
您如何设置测试以使用新的 Ember 测试助手,例如visit
或find
. 我有一些困难使它工作。
我尝试了以下方法:
在创建命名空间之前:
Ember.testing = true
在我的规范中:
App.setupForTesting()
App.injectTestHelpers()
然后我收到一条消息,说我需要用 Ember.run 包装任何异步代码,所以我这样做了,但是我的夹具数据(模拟 GET 请求)不知何故无法访问,所以我无法为它们设置数据。
你想通了吗?
假设您使用的是 RC5(还不是 RC6,因为它有一个小错误)
document.write('<div id="ember-testing-container"><div id="ember-testing"></div></div>');
Ember.testing = true;
App.rootElement = '#ember-testing';
App.setupForTesting();
App.injectTestHelpers();
function exists(selector) {
return !!find(selector).length;
}
function stubEndpointForHttpRequest(url, json) {
$.mockjax({
url: url,
dataType: 'json',
responseText: json
});
}
$.mockjaxSettings.logging = false;
$.mockjaxSettings.responseTime = 0;
然后你会像这样写你的测试
module('integration tests', {
setup: function() {
App.reset();
App.Person.people = [];
},
teardown: function() {
$.mockjaxClear();
}
});
test('ajax response with 2 people yields table with 2 rows', function() {
var json = [{firstName: "x", lastName: "y"}, {firstName: "h", lastName: "z"}];
stubEndpointForHttpRequest('/api/people', json);
visit("/").then(function() {
var rows = find("table tr").length;
equal(rows, 2, rows);
});
});
这是一个完整的示例项目,展示了如何添加上面显示的集成助手和一些基本的集成测试(使用 karma / qunit / jquery-mockjax)