【发布时间】:2019-03-20 14:16:50
【问题描述】:
我们使用 jest 来模拟。 我有一个功能会根据时间向我们打招呼 该文件如下所示:
export default function getGreetingMessage() {
const today = new Date();
const curHr = today.getHours();
if (curHr < 12) {
return 'Good morning';
} else if (curHr < 18) {
return 'Good afternoon';
}
return 'Good evening';
}
我的测试文件如下所示
import getGreetingMessage from '../messages';
describe('messages', () => {
function setup(date) {
const DATE_TO_USE = new Date(date);
global.Date = jest.fn(() => DATE_TO_USE);
}
it('should return good afternoon when time is greater than 12', () => {
setup('Tue Oct 16 2018 15:49:11');
expect(getGreetingMessage()).toEqual('Good afternoon');
});
it('should return good morning when time is less than 12', () => {
setup('Tue Oct 16 2018 10:49:11');
expect(getGreetingMessage()).toEqual('Good morning');
});
it('should return good evening when time is greater than than 19', () => {
setup('Tue Oct 16 2018 19:49:11');
expect(getGreetingMessage()).toEqual('Good evening');
});
});
当我单独运行每个测试时,它工作正常。当我一次运行所有测试时,测试失败了。
我尝试重置 jest 功能。但不工作。
还有其他方法可以尝试吗?
提前谢谢:)
【问题讨论】:
-
调试输出
console.log(today)并确保它是一个笑话。 -
哈,当我运行每个测试时,它给了我一个嘲笑的结果。当我一起运行所有测试时,它给出了正常的日期
标签: javascript reactjs mocking jestjs