我有一些反应代码,我试图测试,看起来像这样:
beforeEach(() => {
wrapper = mount(
<Provider store={store} >
<MyPage params={params} location={location} />
</Provider>
);
});
test('renders My Page', () => {
expect(wrapper).toMatchSnapshot();
});
我试图从react-router传递位置,这样我就可以访问我页面中的查询参数及其组件 . 我有一个适用的快照(例如显示DOM等),但是一旦我添加了这个新属性 wrapper
返回undefined .
我调试了这个,它似乎根本不再呈现 <MyPage ...>
. 我已经尝试将 <MyPage ...>
调用移动到它's own variable, but that did not work either. Finally, I'也尝试将它从mount更改为浅(不确定是什么) . 我似乎找不到任何指示如何告诉它为什么不渲染\ mount的东西 .
是否有任何工具,技术或手段来检测挂载页面\组件无法呈现\ mount的原因?
EDIT 1
在一位同事的帮助下,我发现了我的问题 - 问题是我使用了 PropTypes.shape
而不是 PropTypes.shape()
. 我可以在本地重现这个,但是没有一个在线沙箱工具似乎能够简化这一点 . 而且,就像它(使用无效的PropType)一样,它确实在开玩笑中无声地失败 . 那么,有没有一种方法可以使用标准工具和技术检测到这一点?
1 回答
解释我的评论,React本身会抛出无效的PropType错误,因此读取其控制台日志应该可以解决您的问题 . 正如您所说:如果您使用任何包装进行测试,日志可能会被抑制,因此从裸cli运行它们会有所帮助 .