对于发出网络请求的组件(例如,从 REST 或 GraphQL API 获取数据),您可以使用像 Mock Service Worker (MSW) 这样的工具来模拟这些请求。MSW 是一个 API 模拟库,它依赖于 Service Worker 来捕获网络请求,并提供模拟数据作为响应。
该 MSW 插件 将此功能引入 Storybook,允许您在故事中模拟 API 请求。以下是有关如何设置和使用该插件的概述。
首先,如果需要,运行以下命令来安装 MSW 和 MSW 插件
如果您尚未使用 MSW,请生成 MSW 工作所需的 Service Worker 文件
然后确保 Storybook 配置中的 staticDirs
属性包含生成的 Service Worker 文件(默认情况下位于 /public
中)
最后,使用 项目级加载器 初始化插件并将其应用于所有故事
如果您的组件从 REST API 获取数据,则可以使用 MSW 在 Storybook 中模拟这些请求。例如,考虑此文档屏幕组件
ℹ️此示例使用 fetch
API 发出网络请求。如果您使用的是其他库(例如 axios
),则可以应用相同的原理来模拟 Storybook 中的网络请求。
使用 MSW 插件,我们可以编写使用 MSW 模拟 REST 请求的故事。以下是如何为文档屏幕组件编写两个故事的示例:一个成功获取数据,另一个失败。
GraphQL 是另一种在组件中获取数据的常用方式。您可以使用 MSW 在 Storybook 中模拟 GraphQL 请求。以下是如何模拟从 GraphQL API 获取数据的文档屏幕组件示例
MSW 插件允许您编写使用 MSW 模拟 GraphQL 请求的故事。以下是如何演示文档屏幕组件的两个故事的示例。第一个故事成功获取数据,而第二个故事失败。
在上面的示例中,请注意每个故事如何使用 parameters.msw
配置来定义模拟服务器的请求处理程序。由于它以这种方式使用参数,因此它也可以在 组件 甚至 项目 级别进行配置,允许您在多个故事中共享相同的模拟服务器配置。