У меня есть очень простой компонент-контейнер, который я хочу сделать снимок теста с использованием энзима мелкого рендерера.
class MyComponent extends Component {
render() {
return (
<h1>Hi there</h1>
);
}
}
const mapDispatchToProps = (dispatch) => {
return {
someFunc: () => {}
};
};
export default connect(null, mapDispatchToProps)(MyComponent)
Если я запускаю этот тест:
describe('MyComponent', () => {
test('snapshot', () => {
let appComponent =
<MyComponent/>
const wrapper = shallow(appComponent);
let json = wrapper.html();
expect(json).toMatchSnapshot();
});
});
, тогда я получаю это ошибка:
> Error: ReactShallowRenderer render(): Shallow rendering works only
> with custom components, but the provided element type was `object`.
>
> at ReactShallowRenderer.render (A:\frontend\node_modules\react-test-renderer\cjs\react-test-renderer-shallow.development.js:786:15)
> at fn (A:\frontend\node_modules\enzyme-adapter-react-16\src\ReactSixteenAdapter.js:668:53)
Если я просто протестирую его как компонент (игнорируя редукс), вот так:
export default class MyComponent extends Component {
render() {
return (
<h1>Hi there</h1>
);
}
}
const mapDispatchToProps = (dispatch) => {
return {
someFunc: () => {}
};
};
connect(null, mapDispatchToProps)(MyComponent)
Тогда это будет работать.
Хотя я понимаю, что Я должен просто выполнить поверхностный рендеринг для версии компонента, а не для версии контейнера. Причина, по которой я привожу это, состоит в том, что эти тесты моментальных снимков, которые у меня были на компонентах Redx, работали в течение долгого времени, и теперь внезапно они ломаясь. Я думаю, что это какое-то обновление в редуксе или ферменте, которое внезапно вызывает эти проблемы.