我无法让mocha与Ember合作,因为当执行以下性质的测试时它失败了:
describe('Location Panel', function () {
beforeEach(function () {
App.reset();
visit('/map/41.76721,-72.66907');
});
it('Have proper address', function () {
var $title = find('.panel-header h2');
expect($title).to.have.text('476 Columbus Blvd, Hartford');
});
});
基本上它找不到任何DOM元素,因为它在路由加载完成之前运行测试..如果我在测试中visit
,则会发生同样的情况,并使用andThen
等等。
这是一个用于调试的jsbin。
修改
在jsbin中,我正在使用模拟的ajax调用,但在我的测试中,ajax调用是真实的。我使用的Ember.$.ajax
包含在以下内容中:
function ajax (url, options) {
return new Ember.RSVP.Promise(function (resolve, reject) {
options = options || {};
options.url = url;
options.success = function (data) {
Ember.run(null, resolve, data);
};
options.error = function (jqxhr, status, something) {
Ember.run(null, reject, arguments);
};
Ember.$.ajax(options);
});
}
我是否也应该使用Ember.run.later
?
答案 0 :(得分:3)
您应该使用Ember.run.later
而不是setTimeout
,以便wait
帮助者知道它应该等待。
或者您可以使用Ember.test.registerWaiter
,但我认为您不需要它。
更新了JSBIN:http://emberjs.jsbin.com/gahe/1/edit