Пересмешивая API с httpBackend [Транспортир]
Я разрабатываю приложение для интерфейса REST API. Я использую Protractor для сквозных тестов с вычеркнутым API. Мне удалось смоделировать ответ API AUTHtoken и перейти к выбранному URL, но страница, отображаемая под целевым URL, становится пустой. Вот мой код:
describe('e2e tests', function() {
it('FO tests', function() {
browser.addMockModule('WebClientApp', function() {
console.log('test');
angular.module('WebClientApp', ['ngMockE2E'])
.run(function($httpBackend) {
console.log('test2');
$httpBackend.whenPOST('http://0.0.0.0:9000/api/organizations').respond(200);
$httpBackend.whenPOST('/api/auth/get_resource_by_token').respond(200);
$httpBackend.whenGET('/api/auth/current_resource').respond(200);
$httpBackend.whenGET(/.*/).respond(200);
});
});
browser.getRegisteredMockModules();
browser.get('http://0.0.0.0:9000/#/organizations/profile');
browser.pause();
});
});
К сожалению, консоль Protractor не предоставляет информацию об ошибках во время рендеринга страницы.
1 ответ
На самом деле, ответ со статусом 200 не гарантирует, что вы прошли аутентификацию. Вам нужно передать и обработать некоторый заголовок токена / сеанса.
Также $httpBackend.flush();
нужно. Тогда тест должен пройти.
$httpBackend.expectGET('http://0.0.0.0:9000/#/organizations/profile');
$httpBackend.flush();
Более подробное объяснение можно найти в последнем блоке it(...) в Angular doc для $ httpBackend.