React Jest酶:无法传递路由器参数

时间:2019-01-31 06:44:35

标签: reactjs jestjs enzyme

我有一个名为AddEditVehicle的组件,该组件在路线为/vehicle/:vehicleId/edit时呈现。

我需要测试此组件的React生命周期。因此,我已经使用酶mount通过以下方式在单元测试中渲染了我的组件。

beforeEach(async () => {
  wrapper = await mount(
    <BrowserRouter>
      <Provider store={store}>
        <AddEditVehicle match={{ params: { vehicleId } }} />
         </Provider>
       </BrowserRouter>
      );
     await wrapper.update();
});

此包装器无法传递必需的参数,从而导致以下规范失败。

it("expect `isEditMode` value to set", () => {
      const componentState = wrapper.find("AddEditVehicle").instance().state;
      expect(componentState.isEditMode).toEqual(true);
});

版本

  • 反应^ 16.4.2
  • 反应路由器^ 4.3.1
  • 笑话^ 23.5.0
  • 酶^ 3.4.4

1 个答案:

答案 0 :(得分:0)

我的方法的问题是我的组件是Route的一部分,但是我还是用withRouter包装了这个组件,这是多余的。因此,在单元测试中,当我通过路线match的细节时,它已被覆盖。因此,删除withRouter使解决方案起作用。