我不能让摩卡与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
呢?