У меня возникают проблемы при попытке шпионить за методом службы, чтобы я мог вернуть поддельное значение в 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