笑话找不到模拟模块

时间:2019-05-29 16:18:43

标签: jestjs

我的文件夹结构:

├──wrapper.js 
├──lib
|  └──zwportal.js
├── __tests__
│   └── wrapper.test.js
── __mocks__
│   └── zwportal.js
|

wrapper.js中:

const portal = require('./lib/zwportal.js')

由于zwportal.js非常复杂,因此我在 mocks 文件夹中使用了一个模拟文件。所以在我的测试中:

'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-socketavro-utils在原始的“未模拟” zwportal.js中。似乎笑话没有嘲笑此文件。为什么?

编辑

在我的测试套件中,如果我写:

jest.mock('../lib/zwportal.js', () => {});
zwportal = require('../lib/zwportal.js');

没有问题发生。但是,我需要以某种行为来模拟该模拟。

1 个答案:

答案 0 :(得分:0)

通过在紧邻模块的 mocks /子目录中写入模块来定义

手动模拟。例如,要在models目录中模拟名为user的模块,请创建一个名为user.js的文件,并将其放在models / mocks 目录中。

尝试将模拟目录移至lib目录