Запрос на удержание AngularJS Jasmine get-request

У меня есть factory, чтобы выполнить запрос get, я бы хотел протестировать. К сожалению, тест кармы говорит мне, что в $httpBackend нет ответа.

AngularJs 1.2.14, Жасмин 2.0, Карма 0.12.0

Здесь мой модуль, который я бы хотел проверить:

var appFactory = angular.module('appFactory', []);

appFactory.factory('boxListService', function($http){
    return{
        getList: function(){
            return $http.get('/boxlist').then(function(result){
                return result.data;
            });
        }
    };
});

Мой тест таков:

describe('Module-Test', function() {

    beforeEach(module('appFactory'));

     it('should call $http.get in getList', inject(function (boxListService, $httpBackend){
        $httpBackend.expectGET('/boxlist');
        boxListService.getList();
        $httpBackend.flush();
      }));
});

Сообщение:

Error: No response defined !
at $httpBackend (D:/nodeJS/host/test_app/src/public/js/libs/angular/angular-mock.js:1206:13)

Ответы

Ответ 1

Вы должны определить ожидаемый ответ, а также ожидаемый запрос. Он будет иметь форму:

$httpBackend.expectGET('/boxlist').respond(HTTP_STATUS_CODE, EXPECTED_RESPONSE);

HTTP_STATUS_CODE - целое число. EXPECTED_RESPONSE - это возвращаемое значение (часто это Object Literal).

Вы можете определить только один из них.

Дополнительную информацию смотрите в документации ngMock httpBackend.

Ответ 2

На всякий случай это помогает и потому, что это случилось со мной, хотя это не точный случай вопроса. У меня были две строки:

$httpBackend.whenGET(myService.serviceURL).respond(myMock);
$httpBackend.expectGET(myService.serviceURL);

С when я хотел определить, что ответить при вызове службы, а с помощью expect я хотел проверить, вызван ли этот метод.

Это не работает (хотя иногда это происходит, я не знаю почему). Я думаю, что как-то expect переопределяет when, и поэтому я получил

Ошибка: ответа не найдено!

Решение заключалось в том, чтобы удалить предложение when и добавить respond() в expect

$httpBackend.expectGET(myService.serviceURL).respond(myMock);

Я не знаю, почему структура ведет себя именно так. Если кто-то знает, было бы хорошо, что вы объясните это здесь, чтобы улучшить ответ.