Jest 单元测试失败但不应该
Jest unit test fails but it shouldnt
我有这个方法 returns 布尔值。它可以正常工作,但在单元测试中它失败了。
该方法如下所示:
const isRushHour = (date: string): boolean => {
let isRushHour: boolean = false;
let isFriday: boolean = new Date(date).getDay() === 5;
let selectedTime: string = new Date(date).toLocaleTimeString(
navigator.language,
{
hour: "2-digit",
minute: "2-digit",
}
);
let isRushHourRange: boolean =
selectedTime >= "15:00" &&
selectedTime <= "19:00" ;
if (isFriday && isRushHourRange) {
isRushHour = true;
}
return isRushHour;
};
它主要检查日期是否为星期五以及是否在时间范围内。但是,使用控制台 f.ex;
检查时一切正常
console.log(isRushHour("2022-01-07T19:00"))
这将 return 正确,应该是这样的!
但开玩笑我试过 .toBe(true) , .toBeTruthy() , and to toEqual(true)
expect(calculator.isRushHour("2022-01-07T19:00")).toBe(true);
完全相同的字符串。
但是测试失败并显示消息:
expect(received).toBe(expected) // Object.is equality
Expected: true
Received: false
这解决了问题:
beforeEach(() => {
jest.spyOn(window.navigator, "language", "get");
});
我有这个方法 returns 布尔值。它可以正常工作,但在单元测试中它失败了。 该方法如下所示:
const isRushHour = (date: string): boolean => {
let isRushHour: boolean = false;
let isFriday: boolean = new Date(date).getDay() === 5;
let selectedTime: string = new Date(date).toLocaleTimeString(
navigator.language,
{
hour: "2-digit",
minute: "2-digit",
}
);
let isRushHourRange: boolean =
selectedTime >= "15:00" &&
selectedTime <= "19:00" ;
if (isFriday && isRushHourRange) {
isRushHour = true;
}
return isRushHour;
};
它主要检查日期是否为星期五以及是否在时间范围内。但是,使用控制台 f.ex;
检查时一切正常console.log(isRushHour("2022-01-07T19:00"))
这将 return 正确,应该是这样的!
但开玩笑我试过 .toBe(true) , .toBeTruthy() , and to toEqual(true)
expect(calculator.isRushHour("2022-01-07T19:00")).toBe(true);
完全相同的字符串。
但是测试失败并显示消息:
expect(received).toBe(expected) // Object.is equality
Expected: true
Received: false
这解决了问题:
beforeEach(() => {
jest.spyOn(window.navigator, "language", "get");
});