jestjs - 开玩笑找不到模拟模块
问题描述
我的文件夹结构:
├──wrapper.js
├──lib
| └──zwportal.js
├── __tests__
│ └── wrapper.test.js
── __mocks__
│ └── zwportal.js
|
在wrapper.js
:
const portal = require('./lib/zwportal.js')
由于 zwportal.js 非常复杂,所以我使用mocks文件夹中的mock 。所以在我的测试中:
'use strict';
// Mocking dependencies
jest.mock('../lib/zwportal.js');
zwportal = require('../lib/zwportal.js');
但是,当我运行时:
jest
它说:
FAIL __tests__/wrapper.test.js
● Test suite failed to run
Cannot find module 'abstract-socket' from 'avro-utils.js'
实际上,这些文件abstract-socket
和avro-utils
,在原始的“非模拟”zwportal.js
中。看来 jest 并没有模拟这个文件。为什么?
编辑
在我的测试套件中,如果我写:
jest.mock('../lib/zwportal.js', () => {});
zwportal = require('../lib/zwportal.js');
没有问题发生。但是,我需要用一些行为来模拟模拟。
解决方案
手动模拟是通过在紧邻模块的模拟/子目录中编写模块来定义的。例如,要在 models 目录中模拟一个名为 user 的模块,请创建一个名为 user.js 的文件并将其放在 models/ mocks目录中。
尝试将mocks目录移动到 lib 目录
推荐阅读
- python - 无法在 if 语句中附加 python 数组
- javascript - ER_CON_COUNT_ERROR: Too many connections mysql.pool.query
- c# - How to check if database table exists when the table has 0 rows?
- c# - 如何从 HttpUtility.ParseQueryString 中提取特定案例字段?
- reactjs - Need an appropriate loader to handle this file type
- angular - 如何在包装元素上显示 Angular Reactive Forms 类?
- bootstrap-4 - 如果有人单击此引导程序 li 子菜单,如何禁用切换
- qml - Qt 3D QML 几何渲染器
- python - Nginx 找不到我使用路径指定的文件
- logging - log4j2 - 每日 RollingFile 附加程序的 DefaultRolloverStrategy,不考虑最大值