Пересмешивая 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.

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