Jasmine 2.0 でバックボーン ビューをテストしています。ビューは、ロード時に最初の ajax リクエストを作成して、フォーム フィールドに値を入力します。it
これらの値が受信された後にのみ、Jasmine テスト (以下の関数内) を実行したいと考えています。
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);
});
});