我正在尝试创建一个返回已过去天数的函数。目前,测试通过,但也失败。
这是我在一个名为application.service.ts的类中的函数
private getElapsedDays(creationDate: Date) {
const creationTime = creationDate.getTime();
const currentTime = new Date().getTime();
const elapsedTime = currentTime - creationTime;
return Math.ceil(elapsedTime / (1000 * 60 * 60 * 24));
}
这是 application.service.spec.ts 内部的测试
describe("getElapsedDays", () => {
test("returns correct elapsed days", () => {
const oneWeekAgo = new Date();
oneWeekAgo.setDate(oneWeekAgo.getDate() - 7);
const elapsedDays = applicationService["getElapsedDays"](oneWeekAgo);
expect(elapsedDays).toBe(7);
});
});
所以基本上这个测试套件运行良好并且通过得很奇怪(它返回数字 7),但我仍然收到实际函数本身的错误。
TypeError: creationDate.getTime is not a function
99 |
100 | private getElapsedDays(creationDate: Date) {
> 101 | const creationTime = creationDate.getTime();
| ^
102 | const currentTime = new Date().getTime();
103 | const elapsedTime = currentTime - creationTime;
104 | return Math.ceil(elapsedTime / (1000 * 60 * 60 * 24));
任何帮助将不胜感激!
尝试使用这个:
describe("getElapsedDays", () => {
test("returns correct elapsed days", () => {
const date = new Date();
const oneWeekAgo = new Date(date.getFullYear(), date.getMonths(), date.getDate() - 7);
const elapsedDays = applicationService["getElapsedDays"](oneWeekAgo);
expect(elapsedDays).toBe(7);
});
});
我设法让它工作。所以我正在使用 Typescript,但只是将 Date 类型转换为creationDate
确实会成为它的实例。相反,我不得不把它包裹在一个新的new Date()
所以这就是对我有用的东西,并通过了所有的测试。
private getElapsedDays(creationDate: Date) {
const creationTime = new Date(creationDate).getTime();
const currentTime = new Date().getTime();
const elapsedTime = currentTime - creationTime;
return Math.floor(elapsedTime / (1000 * 60 * 60 * 24));
}