ジャスミンの単体テストを始めたばかりで、非同期呼び出しのテストで問題が発生しています。
テストしようとしている ajax 呼び出しがあり、コンソールで試してみたので、希望どおりに動作することがわかりました。コンソールで行ったのと同じことをテストしていると思いますが、間違っている可能性があります。
コンソールは次のとおりです。
> mg = new MandellMVC()
MandellMVC {getSessionId: function, setSessionId: function, isValidGetFunction: function, getURLPrefix: function, setURLPrefix: function…}
> mg.setUseLocalData(true);
true
> var log = new Log(73936780)
undefined
> log.setLogType('Proc')
true
> log.fetch(mg, function(){console.log('done');})
true
done
set local data は、http リクエストを外部サーバーに送信するか、ローカル ファイルからデータをロードするかの間で変更されるだけです。
ジャスミンのテスト コードは次のとおりです。
describe("Log Model", function() {
var mg = new MandellMVC();
mg.setUseLocalData(true);
var log;
beforeEach(function() {
log = new Log(73936780);
});
describe("function fetch", function() {
it("returns false if log type is invalid", function() {
expect(log.fetch(mg, function(){})).toBeFalsy();
});
// Not sure why this needs to be here too?
log = new Log(73936780);
log.setLogType('Proc');
it("should make a real ajax request", function() {
var callback = jasmine.createSpy();
log.fetch(mg, callback);
waitsFor(function() {
return callback.callCount > 0;
});
runs(function() {
expect(callback).toHaveBeenCalled();
});
});
});
});
最初のテストはパスします。しかし、2番目のものはエラーを出しますtimeout: timed out after 5000 msec waiting for something to happen
。チュートリアルに従おうとしましたが、明らかにうまくいきませんでした。
ありがとう、どんな助けでも大歓迎です!