Jestjs 带路由器的快照不工作

Jestjs 带路由器的快照不工作,jestjs,snapshot,history.js,react-router-v4,Jestjs,Snapshot,History.js,React Router V4,这与此不同,因为 这里我想用对象的JSON定义生成快照 另一个我只想为组件生成的HTML生成快照 快照测试总是失败,因为历史记录中的键属性每次都会更改 // ComponentContainer.jsx class ComponentContainer extends Component { render() { ... } } export { ComponentContainer }; export default withRouter(ComponentContainer);

这与此不同,因为

这里我想用对象的JSON定义生成快照 另一个我只想为组件生成的HTML生成快照


快照测试总是失败,因为
历史记录中的
属性每次都会更改

// ComponentContainer.jsx
class ComponentContainer extends Component {
  render() { ... }
}
export { ComponentContainer };    
export default withRouter(ComponentContainer);
还有测试

// ComponentContainer.test.jsx
import { ComponentContainer } from './ComponentContainer';

const minProps = {
  history: {
    push: jest.fn(),
  },
};

const wrapped = mount(
  <Router history={minProps.history}>
    <ComponentContainer.wrappedComponent {...mergedProps} {...mergedStores} />
  </Router>,
);

expect(toJson(wrapper)).toMatchSnapshot();
//ComponentContainer.test.jsx
从“./ComponentContainer”导入{ComponentContainer};
常量minProps={
历史:{
push:jest.fn(),
},
};
常数=装入(
,
);
expect(toJson(wrapper)).toMatchSnapshot();
生成此快照

// ComponentContainer.test.jsx.snap
<MemoryRouter
    history={
      Object {
        "push": [Function],
      }
    }
  >
    <Router
      history={
        Object {
          "action": "POP",
          "block": [Function],
          "canGo": [Function],
          "createHref": [Function],
          "entries": Array [
            Object {
              "hash": "",
              "key": "mmldr1", // THIS IS GENERATED ON EACH TEST
              "pathname": "/",
              "search": "",
              "state": undefined,
            },
          ],
//ComponentContainer.test.jsx.snap

您需要使用
enzyme.find(ComponentContainer)
从组件本身而不是从路由器创建快照。

为什么不使用
enzyme.find(ComponentContainer)
这样您只需创建组件本身的快照。@wogsland的可能副本不重复,我添加了更多关于问题解释原因的信息。在我看来,快照问题中的键仍然相同。但愿我自己能找到一个好的解决办法!感谢您对我排名最高的问题的报复性否决投票。如果使用浅层渲染,则可以使用
wrapped.dive()
// ComponentContainer.test.jsx
import createHistory from 'history/createMemoryHistory';

const history = createHistory({
  initialEntries: [`/myapp/123`],
});

<Router history={history}>
  <ComponentContainer.wrappedComponent />
</Router>