我有一个有趣的情况:
我在摩卡测试中使用babel-plugin-rewire
如下:
// given
MySystemUnderTest.__Rewire__("ChildComponent",({ prop }) => {
return <div>{prop}</div>;
});
const mockProps = {
prop: "hello,world!"
};
// when
const { getByText } = render(<MySystemUnderTest {...mockProps} />);
// then
await waitForElement(() => getByText("hello,world!"));
MySystemUnderTest.__ResetDependency__("ChildComponent");
我一直在使用WebStorm的mocha测试运行程序以及以下配置:
--require @babel/polyfill --require @babel/register --require mocha-setup.js --require ignore-styles --timeout 10000
运行单个测试,它就像一个魅力。
但是,一旦我使用在我package.json中指定的命令使用glob运行整个测试套件:
"mocha": "cross-env NODE_ENV=test mocha --require @babel/polyfill --require @babel/register --require mocha-setup.js --require ignore-styles --timeout 10000 './src/**/*.test.js'",
使用重新接线的测试失败。没有警告,但是看起来子组件的根目录永远不会发生,因此会渲染整个树。
我的babel设置也在package.json中定义:
"babel": {
"presets": [
"@babel/preset-env","@babel/preset-react"
],"plugins": [
"@babel/plugin-proposal-class-properties","babel-plugin-dynamic-import-node","@babel/plugin-transform-runtime","react-hot-loader/babel","rewire"
]
}
- 反应v 16.11.0
- @ babel / core v 7.7.2
- babel-plugin-rewire 1.2.0