我有一个 React 组件,其中包含一些其他组件,这些组件依赖于对 Redux 存储等的访问,这在执行完整的酶安装时会导致问题。让我们说一个这样的结构:
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
忽略传递给它的props,或者
b) 返回一个 React 组件,可用于模拟我不担心测试的子组件。
或者,还有更好的方法?