Płytki rendering enzymu zachowuje się w nieoczekiwany sposób, jeśli renderuję komponent redux z fałszywym sklepem.enzym płytkie renderowanie tylko jeden węzeł w komponentach redux
Mam prosty test, który wygląda tak:
import React from 'react';
import { shallow } from 'enzyme';
import { createMockStore } from 'redux-test-utils';
import Test from './Test'
it('should render ',() => {
const testState = {
app: {
bar: ['a', 'b', 'c']
}
};
const store = createMockStore(testState)
const context = {
store,
};
const shallowComponent = shallow(<Test items={[]}/>, {context});
console.log(shallowComponent.debug());
}
Komponent testowy wygląda następująco:
class Test extends React.Component {
constructor(props) {
super(props);
}
render() {
return(
<div className="here"/>
)
}
}
export default Test;
które zgodnie z oczekiwaniami wypisuje to:
<div className="here" />
Jednak jeśli moim komponentem jest komponent redux:
class Test extends React.Component {
constructor(props) {
super(props);
}
render() {
return(
<div className="here"/>
)
}
}
const mapStateToProps = state => {
return {
barData: state.app.bar
}
}
export default connect(
mapStateToProps
)(Test)
To co mam w konsoli to:
<BarSeriesListTest items={{...}} barData={{...}} dispatch={[Function]} />
Dlaczego istnieje ta różnica? Jak mogę przetestować, czy mój komponent został w nim osadzony w mojej wersji redux komponentu?
To może ci pomóc https: // github.com/reactjs/redux/issues/1534. Przewiń w dół, a zobaczysz komentarz z dużą ilością + – Nicholas