У меня есть тестовый пример:
it("Should have a valid structure", function(done){
var data;
module(APP_MODULE_NAME);
inject(function(_metaService_){
metaService = _metaService_;
});
metaService.fetchEntityMeta('person').then(function(data){
expect(data.status).toBe( true );
done();
});
});
Но я получаю следующую ошибку:
Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.
Я увеличил jasmine.DEFAULT_TIMEOUT_INTERVAL, но не использовал. Но следующий код действительно работает.
setTimeout(function(){
expect(true).toBe(true);
done();
}, 5000);
Итак, я понимаю, что у меня проблемы с обещанием. Мой вопрос в том, как я могу проверить данные, возвращенные обещанием.
Вы не вызываете обратный вызов done()
любом месте вашего теста. Измените последнее утверждение на
metaService.fetchEntityMeta('person').then(function(data) {
expect(data.status).toBe(true);
done();
});
Другим вариантом является
metaService.fetchEntityMeta('person').then(function(data) {
expect(data.status).toBe(true);
}).then(done);
data.status
фактически равенtrue
?