$httpBackend не отвечает в тесте транспортира

Я пытаюсь написать тест в Protractor/Jasmine, который зависит от моей способности видеть заголовки, отправленные в HTTP-запросе. Для этого я пытаюсь создать фиктивную конечную точку с $httpBackend, которая будет отвечать на вызов с самими заголовками, что позволит мне изучить их в моем тесте. Мой код выглядит следующим образом:

describe('Headers', function () {
    it('should include X-XSRF-TOKEN on HTTP calls', function () {
        browser.addMockModule('httpBackendMock', function () {
            angular.module('httpBackendMock', ['CorsApp', 'ngMockE2E'])
            .run(function ($httpBackend) {
                $httpBackend.whenGET('/xsrftest')
                    .respond(function (method, url, data, headers) {
                        return headers;
                    });
            })
        });

        loginPage.get();

        browser.executeAsyncScript(function (callback) {
            var $http = angular.injector(['ng']).get('$http');

            $http.get('/xsrftest')
                .then(function (response) {
                    callback(response);
                });
        })
        .then(function (response) {
            console.log(response);
        });
    });
});

Я пытался следовать шаблонам, изложенным во многих ресурсах, для использования $httpBackend в тестировании транспортира. Однако, когда я запускаю этот тест, я получаю тайм-аут транспортира. Кажется, что вызов $ http.get никогда не получает ответ, следовательно, обратный вызов никогда не вызывается, и поэтому время вызова executeAsyncScript истекает. Если я вставляю фиктивный вызов для обратного вызова, который не зависит от $ http.get, он работает как положено.

Что я делаю не так при настройке $httpBackend? Как я могу получить его, чтобы ответить на мой запрос $ http?

Спасибо!

0 ответов

Другие вопросы по тегам