次のような約束ベースのサービスをテストしようとしています:
load : function(){
var deferred = $q.defer();
//Do misc async stuff
deferred.resolve();
return deferred.promise;
}
Karma + Jasmine 2.0 でこれをテストしようとすると、done() コールバックを使用しようとしますが、常にタイムアウトし、約束を解決しません。
beforeEach(inject(function ($injector) {
service = $injector.get('myService');
$window = $injector.get("$window");
$rootScope = $injector.get('$rootScope');
}));
describe('Call load', function () {
it('resolves its promise', function (done) {
service.load().then(function(){
expect(something).not.toBe(undefined);
done();
});
});
});
Jasmines docs から、非同期コードと一緒に done() を使用する必要がありますが、問題は約束が解決されないことです