我正在尝试这样的事情:
const useSelector = jest.fn();
jest.mock('react-redux', () => ({
useSelector,
}));
然后尝试做这样的事情:
useSelector.mockReturnValueOnce({});
shallow(
<ComponentUsingUseSelector />
);
这会给我一个错误:
The module factory of
jest.mock()
is not allowed to reference any out-of-scope variables.
因此,如果我不能使用超出范围的变量进行模拟,那么如何为每个测试返回不同的值?
最佳答案
简化版本,也可以使用:
import * as redux from 'react-redux'
jest
.spyOn(redux, 'useSelector')
.mockReturnValueOnce('first call')
此外,最好只 stub 存储的必要部分,而不是依赖于对 mockReturnValueOnce
的多次调用:
const locale = 'en'
const state = {
application: { locale },
}
jest
.spyOn(redux, 'useSelector')
.mockImplementation((callback) => callback(state))
关于javascript - 模拟 useSelector 具有不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61291008/