根据我的研究(例如Mocking the date in Protractor),我们应该能够在带有量角器的Angular E2E测试中使用以下几行来伪造当前日期:
it('should display the fake date put in place via jasmine.clock().mockDate()', async () => {
jasmine.clock().install();
jasmine.clock().mockDate(new Date(2040, 0, 1));
await page.navigateTo();
const result = await page.getCurrentDateDisplayed();
expect(result).toEqual('2040-01-01');
jasmine.clock().uninstall();
});
但是,这似乎对我不起作用,我也不明白为什么。测试输出指示伪造的日期并没有在所有的工作,它使用当前日期:
Expected '2019-02-02' to equal '2040-01-01'.
下面也将app.component.ts和相应的HTML模板:
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
template: `
<div style="text-align:center">
<h1>
Current date is <span class="e2e-curr-date">{{currentDate | date:'yyyy-MM-dd'}}</span>.
</h1>
</div>`,
})
export class AppComponent {
currentDate = new Date();
}
下面也是完整的源:https://github.com/baumgarb/ng-e2e-test-w-jasmine-clock