因此,我有一個組件導入來使用Jest進行一些測試。React&Jest測試:連接到Redux的嵌套組件給出不變違規錯誤
class MyComponent extends Component {
render() {
return (
<div>
<OtherComponent />
</div>
);
}
}
export { MyComponent };
其中其它分量被定義爲:
class OtherComponent extends Component { ... }
export default connect(...)(OtherComponent);
我的測試如下:
import React from 'react';
import { shallow } from 'enzyme';
import { MyComponent } from '../../components/MyComponent';
// ...
僅有的事實,內MyComponent的有OtherComponent,連接到終極版使用connect會導致測試文件中的以上輸入失敗:
不可違反:_registerComponent(...):目標容器不是DOM元素。
at invariant (node_modules/fbjs/lib/invariant.js:44:15)
at Object._renderNewRootComponent (node_modules/react-dom/lib/ReactMount.js:311:76)
at Object._renderSubtreeIntoContainer (node_modules/react-dom/lib/ReactMount.js:401:32)
at Object.render (node_modules/react-dom/lib/ReactMount.js:422:23)
at Object.<anonymous> (my-app-directory/index.js:30:46)
at Object.<anonymous> (my-app-directory/components/OtherComponent.js:x:xx)
at Object.<anonymous> (my-app-directory/components/MyComponent.js:x:xx)
at Object.<anonymous> (my-app-directory/test/components/MyComponent.test.js:x:xx)
at handle (node_modules/worker-farm/lib/child/index.js:41:8)
at process.<anonymous> (node_modules/worker-farm/lib/child/index.js:47:3)
at emitTwo (events.js:106:13)
at process.emit (events.js:191:7)
at process.nextTick (internal/child_process.js:744:12)
at _combinedTickCallback (internal/process/next_tick.js:67:7)
at process._tickCallback (internal/process/next_tick.js:98:9)
因此,如何能測試我的組件如果嵌套組件連接到終極版? O_O」
更新:
我是從我的主要的應用程序文件導入從反應路由器的歷史,index.js,並把它稱爲推裏面的我OtherComponent方法中的一種新途徑。這似乎是造成這個問題的原因。所以我想我不應該在我的組件中使用歷史記錄?如果我選擇保持這種狀態,我將如何在測試中處理這個問題?
import { history } from '../'; // index.js file with ReactDOM injection
class OtherComponent extends Component {
// ...
someMethod() {
callSomeActionCreator();
history.push('/some/route');
}
}