【发布时间】:2020-03-20 13:15:57
【问题描述】:
let state = 'Monday';
export function greet() {
return 'hello ' + state;
}
↑如果有良好的编码习惯,你不会遇到这样的非纯函数,但出于一些特殊原因,我遇到了。
然后,开玩笑:
import { greet } from './functions';
test('a', () => {
expect(greet()).toBe('hello Monday');
});
test('b', () => {
let state = 'Tuesday';
expect(greet()).toBe('hello Tuesday'); // fail! Still 'hello Monday'
});
在这种情况下,我该如何模拟状态?
【问题讨论】:
-
您不需要模拟状态,您可以简单地模拟 greet() 并将其设置为返回“你好星期二”。如果你需要在函数(或类)中模拟一些内部的东西,那么你应该使用依赖注入。
标签: javascript mocking jestjs