6
我切换到反应路由器v4和少数测试需要重新实现。 我有以下情形:反应路由器4和酶
- 安装的组件(检查,如果了methodA被调用)
- 改变由酶道具包装方法:setProps
- 检查,如果方法被调用两次
这对旧路由器来说是相当容易的......但是对于新路由器来说非常困难:
如果组件(或子组件)包含例如Link
,这意味着我们必须提供适当的contxt来呈现组件。这就是为什么MemoryRouter
已创建:
const comp = mount(
<MemoryRouter>
<Comp {...someProps} />
</MemoryRouter>
);
//here comes assertion about spy getting called
这要归功于我们能够呈现组件(详细信息:https://reacttraining.com/react-router/web/guides/testing) 但是...如果我们看一看setProps
方法在酶库(http://airbnb.io/enzyme/docs/api/ReactWrapper/setProps.html):
一种设置根组件的道具并重新呈现的方法。
这意味着,如果我叫comp.setProps({.. newProps}),它实际上改变了路线道具(MemoryRouter
),但并没有改变我的组件的道具,其吸得要命。
有关这种情况的任何见解?