に実行されないばかり決して私はこのジャスミンのテストを持っている、と私はエラーを取得するよう約束のfinally節は、実行取得されていないために表示されます。最後の約束の句はジャスミンテスト
PhantomJS 2.1.1 (Mac OS X 0.0.0) Service: petsFactory .getPetsAsync() should return a list of pets FAILED
Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
私のテストファイルのルックスを以下のような:
'use strict';
describe('Service: petsFactory', function() {
// load the service's module
beforeEach(module('smokeTestApp'));
// instantiate service
var petsFactory;
beforeEach(inject(function (_petsFactory_) {
petsFactory = _petsFactory_;
}));
describe('.getPetsAsync()', function() {
it('should return a list of pets', function (done) {
var testPets = function (pets) {
expect(Array.isArray(pets)).toBe(true);
}
var failTest = function(error) {
expect(error).toBeUndefined();
};
petsFactory
.getPetsAsync()
.then(testPets)
.catch(failTest)
.finally(done);
});
});
});
関連するファクトリメソッドは次のようになります。
var getPetsAsync = function() {
return $q.when(pets);
};
ペットの内容VARI有能なものは完全に同期していますが、約束は即座に存在する同期値の単なるラッパーに過ぎません。
ここで何が問題になりますか? documentationから
'then'関数が呼び出されていますか?また、工場で$ qを普通に注入しますか?コントローラ/サービスの通常の注入を使用するのではなく、角度$のインジェクタに干渉していたので、私は過去に同様の問題を抱えていました。 –
$ qは正常に注入されます。おそらく、呼び出されていない可能性があります。私はちょうどtestPets関数で例外を投げてみたが、まだジャスミンで同じエラーが発生しました。しかし、同期値をラップするときに使用しているように、それは本当に奇妙なことです。 –