不变式失败:您不应该在 ]之外使用 < 我的测试中出现错误: 不变式失败:您不应该在<Link>之外使用<Router> 我该怎么办? 483 | state, 484 | }) => { > 485 | const component = mount(<Testrun {...props} />); | ^ 486 | return component; 487 | }; 488 | it('should have an input for the username', function () { 我在测试中遇到错误:不变失败:您不应该在 之外使用 我该怎么办? 483 |州484 | })=> {> 485 | ... ] >> 在实际项目中,您的<Testrun>嵌套在某些父级中,并且还包裹有某些父级,并且某些父级也具有<BrowserRouter>或<HashRouter>。它们提供了Context API所需的上下文(我的意思是React的<Link>。)> 因此您需要在测试中使用某些路由器版本。就像一样容易 const component = mount(<MemoryRouter><Testrun {...props} /></MemoryRouter>); 您可以使用任何其他路由器,但MemoryRouter由于易于配置和控制,因此在测试中特别有用。 您必须在路由器的子代内部创建Link标签 必须有一个在组件外部应用的组件。因此,您遇到以下错误:不变式失败:您不应在..>外使用 将组件移动到组件内部。

问题描述 投票:0回答:3
我的测试中出现错误:

不变式失败:您不应该在<Link>之外使用<Router>

我该怎么办?

483 | state, 484 | }) => { > 485 | const component = mount(<Testrun {...props} />); | ^ 486 | return component; 487 | }; 488 | it('should have an input for the username', function () {

我在测试中遇到错误:不变失败:您不应该在

之外使用我该怎么办? 483 |州484 | })=> {> 485 | ...

reactjs react-redux jestjs enzyme react-router-dom
3个回答
0
投票
在实际项目中,您的<Testrun>嵌套在某些父级中,并且还包裹有某些父级,并且某些父级也具有<BrowserRouter><HashRouter>。它们提供了Context API所需的上下文(我的意思是React的<Link>。)>

因此您需要在测试中使用某些路由器版本。就像一样容易

const component = mount(<MemoryRouter><Testrun {...props} /></MemoryRouter>);

您可以使用任何其他路由器,但MemoryRouter由于易于配置和控制,因此在测试中特别有用。

-1
投票
您必须在路由器的子代内部创建Link标签

-1
投票
必须有一个在组件外部应用的组件。因此,您遇到以下错误:不变式失败:您不应在..>外使用

将组件移动到组件内部。

© www.soinside.com 2019 - 2024. All rights reserved.