Невозможно настроить `babel-plugin-rewire` для тестов React
Я пытаюсь настроить babel-plugin-rewire так, чтобы в моих тестах Jest я мог создать небольшой тестовый снимок для компонента-оболочки вместо того, чтобы иметь огромный со всеми дочерними компонентами в нем.
Настройки кажутся правильными, но я получаю следующую ошибку:
ReferenceError: Wrapper is not defined
at _get_original__ (app\components\Wrapper\tests\index.te
st.js:22:2168)
at _get__ (app\components\Wrapper\tests\index.test.js:22:
1912)
at Suite.<anonymous> (app\components\Wrapper\tests\index.
test.js:8:82)
at Object.<anonymous> (app\components\Wrapper\tests\index
.test.js:6:1)
at process._tickCallback (internal\process\next_tick.js:103:7)
package.json
"babel": {
"presets": [
[
"latest",
{
"es2015": {
"modules": false
}
}
],
"react"
],
"env": {
"test": {
"plugins": [
"babel-plugin-rewire",
"transform-es2015-modules-commonjs",
"dynamic-import-node"
]
...
"devDependencies": {
...
"babel-plugin-rewire": "^1.1.0",
webpack.base.babel.js
(обычная конфигурация веб-пакета - то же самое в webpack.basetest.babel.js)
module: {
loaders: [{
test: /\.js$/, // Transform all .js files required somewhere with Babel
loader: 'babel-loader?plugins=babel-plugin-rewire',
exclude: /node_modules/,
query: options.babelQuery,
},
Мой тест
для компонента Wrapper, который содержит дочерний компонент Header:
import React from 'react';
import { shallow } from 'enzyme';
import Wrapper from '../index';
describe('<Wrapper />', () => {
console.log('Debugging >>> ' + JSON.stringify(Wrapper)); // Wrapper is defined but blows up here @@
// beforeEach(() => {
// Wrapper.__Rewire__('Header', class extends React.Component {
// render(){ return <div {...this.props}>TEST only the wrapper!!</div> }
// });
// })
// it('renders correctly', () => {
// const tree = shallow( <Wrapper myProps={testData.myProps} /> );
// expect(tree.html()).toMatchSnapshot();
// });
...
});
Спасибо
ОБНОВЛЕНИЕ: Если я закомментирую в Wrapper JSX, где используется заголовок (даже оставляя импорт для заголовка как есть) Wrapper.__Rewire__
становится определенным и, следовательно, beforeEach
больше не выдает ошибок.