gpt4 book ai didi

reactjs - Jest - 测试使用react-router的组件

转载 作者:行者123 更新时间:2023-12-03 23:13:02 25 4
gpt4 key购买 nike

我正在测试一个呈现具有以下 contextTypes 的子组件的组件:

Component.contextTypes = {router: PropTypes.object.isRequired}

我对 Jest 完全陌生,但来自摩卡/ enzyme 我从未遇到过这个问题。

我的第一个测试看起来像这样,我真的只是摆弄它看看它是如何工作的:

it('should exist', () => {
wrapper = renderer.create(<Companies/>);
let tree = wrapper.toJSON();
expect(tree).toMatchScreenshot();
});

当我运行测试时,出现以下错误:

Failed context type: The context `router` is marked as required in `ChildComponent`, but its value is `undefined`.

是否有解决此问题的方法,或者只是我缺少的文档中的某些内容?提前致谢!

解决方案:对于遇到同样问题的任何人,我在 beforeEach() 中使用了以下内容:

    MyComponent.contextTypes = {
router: function () {
return {
transitionTo: jest.genMockFunction()
};
}
};

最佳答案

我在使用 <Link> 时遇到了类似的问题在某些组件中,并面临与上述相同的错误。就我而言,我使用的是react-router 4.1.1,上面的解决方案不起作用。

我将对象和函数添加到上下文中,但我希望有人为此提供更好的解决方案。

describe('SomeComponent', ()=>{

it('renders component', ()=>{
const wrapper = mount(
<SomeComponent />,
{
context: {
router: {
history: {
push: ()=>{},
replace: ()=>{},
createHref: ()=>{},
}
}
},
childContextTypes: {
router: PropTypes.object.isRequired,
}
}
)
expect(wrapper.text()).toContain('some component text')
})

})

我正在使用 enzyme mount .

关于reactjs - Jest - 测试使用react-router的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42402751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com