У меня выше ошибка в моих тестах Jesmine. У Code есть контроллер, который вызывает сервис AppsService для получения ответа на обещание массива приложений, за которым следует метод onLoad -
AppsService.initAndGetApps(appCredentialType)
.then(onLoad)
.catch(onError);
Код работает нормально, но получает ошибку для модульных тестов, таких как -
TypeError: undefined не является конструктором (оценивает 'AppsService.initAndGetApps (appCredentialType) .then (onLoad)')
Я пытался смоделировать initAndGetApps в моем файле спецификации с помощью Jasmine & также как пользовательский метод, подобный этому(оба дают одинаковую ошибку выше) -
1.
initAndGetApps : jasmine.createSpy("initAndGetApps").and.callFake(function (credentialType) {
return []; // empty is ok
}
2.
AppsService = {
initAndGetApps: function (credentialType) {
return [];
}
}
$provide.value('AppsService', AppsService);
AppsService использует deferred.promise для возврата ответа на обещание после выполнения некоторых вычислений на основе параметра credentialType (он также выполняет два вызова Promise). Test не может вызвать initAndGetApps, так как не получает консоль credentialType в первой строке initAndGetApps.
Может кто-нибудь подсказать мне правильный способ насмешки над AppsService.