【发布时间】:2017-01-01 22:38:13
【问题描述】:
我正在使用库 React-Reponsive。 https://github.com/contra/react-responsive
我正在努力弄清楚如何测试嵌套在 React-Responsive Media Query Components 中的组件:
export default class AppContainer extends React.Component {
render(){
return(
<MediaQuery minDeviceWidth={750}>
<Header />
</MediaQuery>
);
}
}
-
describe("AppContainer", () => {
let App;
let wrapper;
beforeEach(() => {
wrapper = mount(<Provider store={store}><AppContainer location={location} /></Provider>);
App = wrapper.find(AppContainer);
});
it('to have a <Header /> component', () => {
console.log(App.debug());
expect(App.find(Header)).to.have.length(1);
});
}
测试结果:
1) AppContainer to have a <Header /> component:
AssertionError: expected { Object (component, root, ...) } to have a length of 1 but got 0
console.log输出的相关部分是:
<MediaQuery minDeviceWidth={750} values={{...}} />
表示 Header 确实没有出现在渲染树中。但是,如果我删除 MediaQuery 并使 Header 成为 AppContainer 的直接子级,则测试通过。
我想这不是一个错误,因为我对 Enzyme 和测试组件非常陌生。任何帮助或示例将不胜感激。
请注意:我在这个组件上的其他测试都通过了。我相信导入和设置都是正确的。
【问题讨论】:
-
应该不是
expect(App.find(MediaQuery)).to.have.length(1); -
是的,这可以用于测试媒体查询,但我正在寻找的是在这种情况下如何测试 Header