Я пытаюсь проверить службу в Angular, которая использует $ http, но примерно через 5 секунд (время ожидания жасмина) я получаю:
Ошибка: Тайм-аут - обратный вызов Async не вызывается в течение таймаута, указанного jasmine.DEFAULT_TIMEOUT_INTERVAL.
Ошибка: Тайм-аут - обратный вызов Async не вызывается в течение таймаута, указанного jasmine.DEFAULT_TIMEOUT_INTERVAL.
Я пытался использовать $ rootScope. $ Digest(), но это, похоже, не имело никакого значения. Тесты (и код приложения) написаны в машинописном машинописном тексте, и код действительно работает в реальном приложении.
Я не вижу предупреждения/журнала, говорящего, что then() запустился, но мне удалось получить предупреждение с помощью setTimeout() в тесте (никаких изменений в приложении), но я все еще получал ошибки.
Код испытания
var $httpBackend, orderSearchService;
beforeEach(inject((_$httpBackend_, _orderSearchService_) => {
$httpBackend = _$httpBackend_;
orderSearchService = _orderSearchService_;
$httpBackend.expectGET("http://testUrl/api/search/testquery");
$httpBackend.whenGET("http://testUrl/api/search/testquery").respond(200, "testData");
}));
it("can call $http and retrieve results",(done) => {
orderSearchService.search("testquery").then(promise => {
var results = promise.data;
alert(results);
expect(results).toBe("testData");
$httpBackend.flush();
done();
});
});
Отрывок из службы:
public search(term: string): angular.IPromise<any> {
var result: angular.IPromise<any> = this.httpService.get("http://testUrl" + "/api/search/" + term)
.success((data: any) => { return data });
return result;
}
Мое понимание, что тест должен быть вызовом поиска(), и жасмин следует ждать готовности() к называться.
You Пропустил вызов метода '$ digest()' в модульном тесте. Угловой не знает, когда следует выполнить метод .then() ' –