小编Mar*_*ski的帖子

反应路由器4和酶

我已经切换到路由器v4的反应,很少有测试需要重新实现.我有以下场景:

  • 安装组件(检查是否已调用methodA)
  • 用酶包装方法改变道具:setProps
  • 检查方法是否已被调用两次

对于旧的路由器来说这很容易..但是新的路由器很难:

例如Link,如果包含组件(或子组件),则意味着我们必须提供适当的contxt来呈现组件.这就是为什么MemoryRouter创造了:

const comp = mount(
      <MemoryRouter>
        <Comp {...someProps} />
      </MemoryRouter>
    );
//here comes assertion about spy getting called
Run Code Online (Sandbox Code Playgroud)

感谢我们能够渲染组件(更多信息:https://reacttraining.com/react-router/web/guides/testing)但是..如果我们看一下setProps酶库的方法(http:// airbnb.io/enzyme/docs/api/ReactWrapper/setProps.html):

一种设置根组件的道具并重新渲染的方法.

这意味着如果我调用comp.setProps({.. newProps}),它实际上会更改路径props(MemoryRouter),但不会改变我的组件道具,这很糟糕.

对此类案件的任何见解?

jsx reactjs react-router enzyme

9
推荐指数
1
解决办法
827
查看次数

标签 统计

enzyme ×1

jsx ×1

react-router ×1

reactjs ×1