Макет службы в тесте E2E в транспортире

Я хочу написать функциональный тест для своего приложения и хочу смоделировать мою службу loginService, чтобы ускорить тесты. Я не хочу издеваться над $http, а над сервисом, который его внутренне вызывает, но я не могу поставить шпионку на функцию loginService.validate, которая отправляет HTTP-запрос на сервер, но он не грузится, так как он находится в драйвере, а не в самом тесте. Я также взглянул на addMockModule, но не могу понять, как его использовать. Есть ли простой способ сделать то, что я хочу? Я посмотрел на эти, но они не помогли:

Насмешка и заглушка с помощью транспортира

Насмешка над сервисом angular в Protractor


person Community    schedule 14.05.2016    source источник


Ответы (1)


Попробуй это.

describe('MockingHttp', function() {
  beforeEach(function() {
    browser.addMockModule('httpMocker', function() {
      angular.module('httpMocker', ['ngMockE2E'])
      .run(function($httpBackend) {
        $httpBackend.whenGET(
          'http://jsonplaceholder.typicode.com/photos')
          .respond([
          {
            albumId: 1,
            id: 1,
            title: "accusamus beatae ad",
            url: "http://placehold.it/600/92c952",
            thumbnailUrl: "http://placekitten.com/g/200/300"
          }
          ])

      })
    })
  });

Прочтите это для получения дополнительных разъяснений. :)

person Manuli    schedule 16.05.2016
comment
Еще один полезный пример (в котором не используются ни $httpBackend, ни ngMockE2E, а просто требуется заменить сервис поведением, необходимым для теста) показано здесь - person The Red Pea; 02.08.2017