Ich benutze die Bibliothek React-Reponsive. https://github.com/contra/react-responsiveWie teste ich React-Responsive Komponenten mit Enzyme?
Ich kämpfe, um herauszufinden, wie die Komponenten zu testen, die in React-Responsive Medien Abfragekomponenten verschachtelt sind:
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);
});
}
Das Testergebnis:
1) AppContainer to have a <Header /> component:
AssertionError: expected { Object (component, root, ...) } to have a length of 1 but got 0
Der relevante Teil des Ausgangs der console.log ist:
<MediaQuery minDeviceWidth={750} values={{...}} />
Zeigt an, dass Header tatsächlich nicht in der Render-Struktur angezeigt wird. Wenn ich jedoch die MediaQuery entferne und Header zu einem direkten Kind von AppContainer mache, wird der Test bestanden.
Ich kann mir vorstellen, dass dies kein Fehler ist, da ich Enzyme und Testkomponenten im Allgemeinen sehr neu bin. Jede Hilfe oder Beispiele wären willkommen.
Bitte beachten Sie: Die anderen Tests, die ich an dieser Komponente habe, sind in Ordnung. Ich bin zuversichtlich, dass die Importe und das Setup alle korrekt sind.
Sollte es nicht 'sein erwarten (App.find (MediaQuery)) zu.. haben.length (1); ' – vijayst
Yeah, das würde für das Testen von Media Query funktionieren, aber was ich suche, ist, wie man in diesem Fall nach Header sucht. –