Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何解决与redux存储相关的“不变冲突”错误?_Javascript_Reactjs_Unit Testing_Jestjs_Redux Store - Fatal编程技术网

Javascript 如何解决与redux存储相关的“不变冲突”错误?

Javascript 如何解决与redux存储相关的“不变冲突”错误?,javascript,reactjs,unit-testing,jestjs,redux-store,Javascript,Reactjs,Unit Testing,Jestjs,Redux Store,我试着做DOM测试,检查是否有一个对话框在点击按钮时打开。然后我犯了这个错误 不变冲突:在>ConnectPhotos的上下文或道具中找不到存储。将根组件包装在中,或>将存储作为道具显式传递给ConnectPhotos 我使用jest,我的组件使用 导出默认的ConnectMapTopProphotos AccessoriesPhotos.js class Photos extends React.Component { constructor() { super();

我试着做DOM测试,检查是否有一个对话框在点击按钮时打开。然后我犯了这个错误

不变冲突:在>ConnectPhotos的上下文或道具中找不到存储。将根组件包装在中,或>将存储作为道具显式传递给ConnectPhotos

我使用jest,我的组件使用

导出默认的ConnectMapTopProphotos

AccessoriesPhotos.js

class Photos extends React.Component {
    constructor() {
        super();
        this.state = {
            open: false,

        }
        this.handleOpen = this.handleOpen.bind(this);
    }
    handleOpen = () => {
        this.setState({ open: true });
    };

    render (){
        return (....)
    }

    const mapToProps = (state) => {
        return {
          Search: state.Search,
          App: state.App
        }
      }


    export default connect(mapToProps)(Photos);
}
AccessoriesPhotos.test.js

import React from 'react';
import Enzyme, {shallow} from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import { Photos } from '../../../Photos/Bike/AccessoriesPhotos';

Enzyme.configure({adapter: new Adapter()});

it('Dialog box opens after click', () => {

  const openDialogButton = shallow(<Photos open="true" close="false" />);

  expect(openDialogButton.text()).toEqual('true');

  openDialogButton.find('input').simulate('change');

  expect(openDialogButton.text()).toEqual('false');
});
这就是我得到的结果

不变冲突:在>ConnectPhotos的上下文或道具中找不到存储。将根组件包装在中,或>将存储作为道具显式传递给ConnectPhotos.strong文本

您的照片组件未获得存储,因为您在测试中未将其作为子级呈现给提供商。如果您将它包装在测试的提供者中,它将按预期工作

const openDialogButton = shallow(
  <Provider store={store}>
    <Photos open="true" close="false" />
  </Provider>
);