Как шпионить за услугой в тесте Angular E2E с помощью транспортира - PullRequest
0 голосов
/ 03 февраля 2019

У меня возникают проблемы при попытке шпионить за методом службы, чтобы я мог вернуть поддельное значение в Angular E2E тесте с Protractor.

Это компонент (загружается при маршруте«/ date» ударил):

@Component({
  selector: 'app-date',
  template: `
    Current date is <span class="e2e-curr-date">{{currentDate | date:'yyyy-MM-dd'}}</span>
  `,
})
export class DateComponent implements OnInit {
  currentDate: Date;

  constructor(private dateSvc: DateService) {}

  ngOnInit() {
    this.currentDate = this.dateSvc.getCurrentDate();
  }
}

И это соответствующий тест E2E:

describe('workspace-project App', () => {

  const homePage = new HomePage();
  const datePage = new DatePage();

  beforeAll(() => {
    spyOn(DateService.prototype, 'getCurrentDate').and.returnValue(new Date(2040, 0, 1));
  });

  it('should display the fake date put in place via a fake date service', async () => {
    await homePage.navigateTo();
    await homePage.isLoaded();

    await datePage.navigateTo();
    await datePage.isLoaded();

    const result = await datePage.getCurrentDateDisplayed();
    expect(result).toEqual('2040-01-01');
  });

});

Этот тест всегда завершается неудачно с сообщением об ошибке:

Ожидается, что '2019-02-03' будет равно '2040-01-01'. Таким образом, он отображает текущую дату, а не ту, которая должна быть возвращена настройкой шпиона.

Полный пример рабочего кода вы можете найти здесь: https://github.com/baumgarb/ng-mock-date-in-e2e-tests

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...