按照这里提供的测试连接组件的简单指南,我已经通过了几个月的这种格式的测试:
import ConnectedFaultReport, {FaultReport} from [...];
describe('FaultReport (connected) component tests', () => {
let container = shallow(<ConnectedFaultReport />);
it('Should render the Redux connected component', () => {
expect(container.length).toEqual(1)
});
})在将react-脚本升级到3.0.0之后,我现在得到了一个可怕的结果:
Invariant Violation: Could not find "store" in the context of "Connect(FaultReports)..."错误。我必须通过所有简单的连接测试和实现:
import { Provider } from "react-redux";
import configureMockStore from "redux-mock-store";
const mockStore = configureMockStore();
const store = mockStore({});
describe('FaultReport (connected) component tests', () => {
let container = shallow(
<Provider store={store}>
<ConnectedFaultReport />
</Provider>
);
it('Should render the Redux connected component', () => {
expect(container.length).toEqual(1)
});
})我对redux-mock-store没有意见,但这是大量的搅动和重构。在升级react-scripts之后,我是唯一一个看到这个的人吗?
@markerikson:我之前并没有把store作为道具。实施的升级如下(这次我保存了ncu的输出,因为在一个单独的项目上发生了相同的事情)。刚刚注意到react-redux也被撞到了一个完整的版本.
react-redux ^6.0.1 → ^7.0.3
react-scripts 2.1.8 → 3.0.0
enzyme-adapter-react-16 ^1.11.2 → ^1.12.1发布于 2019-04-30 20:39:47
实际上,浅层渲染<ConnectedFaultReport>完全与Redux v6一起工作,这让我感到惊讶。我们有几个用户报告说,这完全停止了工作。。另外,如果您没有将存储作为支柱传递或包装在<Provider>中,那么现有的测试就会失败--连接的组件总是需要存储,句号。
从v7开始,您应该能够再次将商店直接作为道具传递(与v5和更早的版本一样),比如<ConnectedFaultReport store={store} />。
https://stackoverflow.com/questions/55923342
复制相似问题