Jor*_*ein 6 javascript unit-testing reactjs webpack jestjs
在测试文件中,我需要渲染一个组件,同时模拟它的一些子组件.文件结构看起来像这样松散.
档案1
import {A, B} from 'a-module';
export function MyComponent() {
return (
<div>
<A /> // I need to mock
<B /> // these components out
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
档案2
import {MyComponent} from 'File 1';
/*
* In this file I would like to render MyComponent but
* have components A and B be replaced by mocks
*/
Run Code Online (Sandbox Code Playgroud)
我已经尝试过,jest.mock('a-module', () => 'Blah');但这并没有成功地模拟组件.但是,在文件1中使用默认导入时,这会有效.
在模拟组件A和在文件2中B渲染时的任何帮助MyComponent都将非常感激!
你可以像这样模拟非默认值:
jest.mock('a-module', () => ({
__esModule: true,
default: () => 'Blah',
A: () => 'Blah',
B: () => 'Blah'
}));
Run Code Online (Sandbox Code Playgroud)
https://remarkablemark.org/blog/2018/06/28/jest-mock-default-named-export/
或使用__mocks__
作为替代方案,您可以__mocks__在原始模块旁边的文件夹下创建一个文件,其名称与模块相同:
a_module_folder >
a-module.js
__mocks__ >
a-module.js
Run Code Online (Sandbox Code Playgroud)
而mock应该只导出模拟版本:
export const A = () => 'Blah';
export const B = () => 'Blah';
Run Code Online (Sandbox Code Playgroud)
然后像这样嘲笑:
jest.mock( '一个模块');
对于node_modules,只需将__mocks__文件夹放在同一级别上即可node_modules
https://jestjs.io/docs/en/manual-mocks
| 归档时间: |
|
| 查看次数: |
1658 次 |
| 最近记录: |