reactjs - 如何模拟默认的 createHook 和命名的 createHook 导出?
问题描述
我正在尝试为使用 react-sweet-state 钩子获取存储信息并返回选择器数据的容器编写一些测试。
我已经搜索了堆栈溢出的解决方案,但我发现的主要解决方案是给我一个错误
TypeError: arr[Symbol.iterator] is not a function
代码:
stores/Global.js
export default createHook(Store);
export const useFooSelector = createHook(Store, {
selector: fooSelector,
});
index.jsx
import useGlobalStore, { useFooSelector } from '../../stores/Global';
const App = () => {
const [{ state }, { actions }] = useGlobalStore();
const [{ foo }] = useFooSelector();
}
test.js
const mockUseGlobalStore = jest.fn();
const mockUseFooSelector = jest.fn();
jest.mock('../../../stores/Global', () => ({
__esModule: true,
default: () => mockUseGlobalStore,
useFooSelector: () => mockUseFooSelector,
}));
test('should render', async () => {
mockUseFooSelector.mockImplementation(() => [{ foo: 1 });
mockUseGlobalStore.mockImplementation(() => [{ state },{ actions }]);
render(<App />);
});
这给了我一个错误,即 arr[Symbol.iterator] 不是函数。但我不确定如何设置模拟以使其正常工作。
解决方案
对于任何发现这一点的人。我没有正确调用我的模拟函数。它返回一个函数,而不是传递的数组。♀️</p>
jest.mock('../../../stores/Global', () => ({
__esModule: true,
default: () => mockUseGlobalStore(),
useFooSelector: () => mockUseFooSelector(),
}));
推荐阅读
- python - Ctype - 找不到 DLL 依赖项
- linux - awk, sed, grep Linux 文件中的特定字符串
- python - 当 Firebase 云消息传递 API 失败时重试
- php - 日历表 PHP
- php - 如何将完整 URL 作为端点添加到 GET 请求
- php - 如何从价格计算中显示总计
- angular - 我在 WebLogic 12c 上部署的 Angular 应用程序重定向到 localhost 而不是实际的主机名
- vue.js - 材质图标字体文件 url 不正确
- flutter - 没有为“Uri”类型定义运算符“+”
- react-native - @walletconnect/client 抛出错误:尝试解析模块加密时