Как проверить обещание в жасмине и карме

0

У меня есть тестовый пример:

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);

Итак, я понимаю, что у меня проблемы с обещанием. Мой вопрос в том, как я могу проверить данные, возвращенные обещанием.

Теги:
unit-testing
karma-jasmine
jasmine
tdd

1 ответ

0

Вы не вызываете обратный вызов 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);
  • 0
    мой плохой, теперь я получаю: Ошибка: Тайм-аут - асинхронный обратный вызов не был вызван в течение времени ожидания, указанного в jasmine.DEFAULT_TIMEOUT_INTERVAL. И изменение жасмина. DEFAULT_TIMEOUT_INTERVAL не помогает.
  • 0
    Ваше утверждение прошло? т.е. data.status фактически равен true ?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню