我正在尝试这样的事情:
const useSelector = jest.fn();
jest.mock('react-redux', () => ({
useSelector,
}));
然后尝试做这样的事情:
useSelector.mockReturnValueOnce({});
shallow(
<ComponentUsingUseSelector />
);
那会给我一个错误:
jest.mock()
的模块工厂不允许引用任何范围外的变量。因此,如果我不能使用超出范围的变量进行模拟,那么我将如何为每个测试返回不同的值?
最佳答案
在阅读了大量不符合我(想)要做的文章和文档之后,以下内容似乎可以工作:终于找到了一个。
import { useSelector } from 'react-redux';
jest.mock('react-redux', () => ({
useSelector: jest.fn(),
}));
describe('some test', () => {
it('do something', () => {
useSelector.mockImplementation(() => ('hello world'));
shallow(
<ComponentUsingUseSelector />
);
如果多次调用,我可以执行以下操作:
describe('some test', () => {
it('do something', () => {
useSelector.
.mockReturnValueOnce('first call')
.mockReturnValueOnce('second call')
shallow(
<ComponentUsingUseSelector />
);