【发布时间】:2021-10-12 18:35:58
【问题描述】:
我正在尝试为使用微前端架构的 react spa web 应用程序编写单元测试。我的第一步是为应用程序容器编写单元测试。
应用程序容器 react 组件使用一个 react-router 包含一个带有后续路由的开关来呈现主要内容区域中的组件。
每个应用程序都使用 JavaScript 运行时集成安装到应用程序容器。
我正在使用 React-Testing-Library 和 Jest 作为我的测试工具集的一部分。
我在互联网上到处搜索,但没有找到任何关于我遇到的问题的有用文章。他们中的大多数都展示了一个测试与我的场景无关的 Web 应用程序的演示。
我有 3 个问题需要一些指导。
-
由于微前端由多层组件组成,这些组件与身份验证和其他业务逻辑链接在一起。我应该只测试“页面组件”吗?还是应该从 App 组件开始测试整个应用程序容器?如果两者都不是,我应该如何测试这个应用程序?
-
为了简单起见,我尝试在页面组件级别进行测试以避免身份验证问题,但该组件包含来自 React Router 库的组件,并且 Jest 抱怨我不应该使用
<Link>组件包含在<Router>组件中。但是,<Router>组件在运行时执行时出现在父组件级别。如何让 Jest “忽略”这个问题?我找不到允许我忽略此错误的配置。
-
由于问题 #2,我尝试通过渲染
<App>组件来编写单元测试,但是该组件被传递到执行身份验证验证的高阶组件中。我如何才能专注于测试最终结果而不是身份验证 HOC 的功能,以便让组件呈现并让我的测试执行?
【问题讨论】:
-
您问题中的术语微前端让我感到困惑。它有一个非常具体的含义 - 这实际上是一个 microfrontend 应用程序,还是您在询问有关测试反应组件的一般问题?一个微前端应用程序包含“胶水”代码,然后它包含一堆单独的组件(可以用各种框架编写,甚至是 vanilla js)。
-
该应用程序是一个微前端应用程序。我只有为不使用身份验证或微前端的简单虚拟反应应用程序编写单元测试的经验;但是现在,我面临一个同时具有这两者的应用程序,这对我来说真的很困惑,所以我正在寻求一些帮助来理解我应该如何做到这一点。
-
是什么让它成为微前端?如果整个应用程序都是用 react 编写的,并且组件的来源来自不同的地方/存储库,那么它就不是微前端,它只是一个 react 应用程序。第 2 点的答案很简单 - 在您的测试设置中,您将
Router包裹在您的主题组件周围。
标签: reactjs micro-frontend react-testing