【发布时间】:2017-11-08 05:55:49
【问题描述】:
我有一个 React 组件,其中包含一些其他组件,这些组件依赖于对 Redux 存储等的访问,这在执行完整的 Enzyme 装载时会导致问题。让我们说一个这样的结构:
import ComponentToMock from './ComponentToMock';
<ComponentToTest>
...some stuff
<ComponentToMock testProp="This throws a warning" />
</ComponentToTest>
我想使用 Jest 的 .mock() 方法来模拟出子组件,这样就不用担心测试了。
我知道我可以用类似这样的东西来模拟一个直接的组件:
jest.mock('./ComponentToMock', () => 'ComponentToMock');
但是,由于该组件通常会接收 props,因此 React 会感到不安,并发出警告,提示未知 props(在本例中为 testProp)被传递给 <ComponentToMock />。
我尝试返回一个函数,但是你不能在 Jest 模拟中返回 JSX(据我所知),因为它被提升了。在这种情况下会引发错误。
所以我的问题是我该怎么做
a) 让ComponentToMock 忽略传递给它的道具,或者
b) 返回一个 React 组件,该组件可用于模拟我不担心测试的子组件。
或者...有更好的方法吗?
【问题讨论】:
-
我自己遇到了很多麻烦,但在这里得到了回答:SO Question
标签: reactjs unit-testing mocking jestjs enzyme