【发布时间】:2014-03-05 21:35:01
【问题描述】:
我正在使用 Jasmine 2.0 测试主干视图。视图在加载时发出初始 ajax 请求,以用值填充其表单字段。我希望我的 Jasmine 测试(在下面的 it 函数中)仅在收到这些值后运行。
测试当前失败,因为似乎在测试运行后收到了 ajax 请求,即使我正在存根 ajax 请求。
我应该如何编写这个测试?
describe('View', function() {
var formFieldValues = [/* blah */];
var view;
beforeEach(function(done) {
jasmine.Ajax.install();
jasmine.Ajax.stubRequest('/form-fields').andReturn({
responseJSON: formFieldValues
});
view = new View({el: $('<main></main>')}); // makes ajax call on initialization
$('body').append(view.el);
});
afterEach(function() {
view.remove();
jasmine.Ajax.uninstall();
});
it('form fields have values', function(done) {
// PROBLEM IS HERE: THE FOLLOWING RUNS BEFORE VIEW'S AJAX CALL FINISHES
expect(view.$('[name="fieldName"]').children().length).toEqual(formFieldValues.length);
});
});
【问题讨论】:
标签: javascript backbone.js jasmine backbone-views jasmine-jquery