javascript - 让 Jest 在故事书中全局可用

标签 javascript reactjs jestjs create-react-app storybook

我在 create-react-app 项目中使用 @storybook/react 6。

我对所有商店/对象等进行了数千次测试和模拟。

这些模拟使用 jest.fn()

我想在我的故事书故事中重用这些模拟,但它说 jest is not defined 这是有道理的。

我想知道是否有一种简单的方法可以在运行故事书时让 jest 全局可用。

目前,我正在使用的每个模拟文件中添加 import jest from 'jest-mock',但我想知道是否有更好的解决方案。

例子:

test.stories.tsx

import React from 'react';

export default {
  title: 'Test'
};

export Test = () => <button onClick={jest.fn()}>Test</button>;

会编译但不会运行 -> jest is not defined 错误

import React from 'react';
import jest from 'jest-mock';

export default {
  title: 'Test'
};

export Test = () => <button onClick={jest.fn()}>Test</button>;

工作正常,但我想避免在任何地方都导入 jest-mock

最佳答案

您可以通过将以下行添加到项目的 .storybook 文件夹中的 preview.js 文件来确保模拟在您的所有故事中可用:

import jest from 'jest-mock';
window.jest = jest;

来自Storybook docs :

Use preview.js for global code (such as CSS imports or JavaScript mocks) that applies to all stories.

关于javascript - 让 Jest 在故事书中全局可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64349461/

相关文章:

reactjs - 如何在 React 中获取 ChildNode 的宽度?

reactjs - react 脚本无效的主机 header

node.js - 如何在 Node js 中模拟 AWS QLDB

javascript - Node.js 无法使用 Promise、Mongoose 和 GET 请求推送到全局数组

javascript - 复杂的 CSS 选择器 - 如何要求可见

javascript - React 测试库 : When to use userEvent. 单击以及何时使用 fireEvent

javascript - 用 Enzyme 听 onClick

reactjs - 我怎样才能让 Jest 静静地测试抛出的错误

Javascript 不会每两分钟更新一次函数

javascript - 如何使用 Mozilla Rhino 中文件的重定向输入运行 bash 脚本的 Command()?