我们正在尝试为所有现有的 React 组件编写单元/集成测试。我们目前正在将 React 与 Mobx 4 一起使用,测试主要使用 react-testing-library/jest 编写。我们确实在某些区域使用了 Enzyme 以利用浅层渲染。我们的问题是,当我们访问一些“页面”或容器组件时,我们会遇到错误,例如“MobX 注入器:存储 'teamStore' 不可用!确保它是由某个 Provider 提供的”
我们进行了一些挖掘,但在搜索类似问题以供参考时找不到任何东西。我们确实知道这是由直接将存储注入其中并被调用到我们的容器/页面中的子组件引起的。
我的问题是:在测试框架中是否有任何方法可以将在我们的容器组件中创建的模拟存储传递给子组件?显然,如果我们将 store 作为 prop 从父级传递给子级,则可以解决问题,但我们试图避免以任何方式修改组件本身。
如果上述情况不可行,我们是否还有其他选择,无需重构组件以根据需要向下传递存储,而不是直接注入子组件?
import React, { Component } from "react";
import { inject, observer } from "mobx-react";
import { Container, Grid, Segment } from "semantic-ui-react";
import ChildComp from "../../components/ChildComp";
@inject("userStore")
@observer
class ParentComponent extends Component {
render() {
return (
<Container className="parent">
<Segment basic>
<h1>Hello</h1>
<ChildComp />
</Segment>
</Container>
);
}
}
export default ParentComponent;
import React, { Component } from "react";
import { inject, observer } from "mobx-react";
import { Container, Grid, Segment } from "semantic-ui-react";
@inject("teamStore")
@observer
class ChildComp extends Component {
render() {
return (
<Segment basic>
<p>How can I help you?</p>
</Segment>
);
}
}
export default ChildComp;