【问题标题】:Jest Not Find Mock Module开玩笑找不到模拟模块
【发布时间】:2019-11-07 17:35:27
【问题描述】:

我的文件夹结构:

├──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 并没有模拟这个文件。为什么?

编辑

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

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

没有问题发生。但是,我需要模拟一些行为来模拟。

【问题讨论】:

  • 您找到解决方案了吗?我遇到了类似的问题。

标签: jestjs


【解决方案1】:

手动模拟是通过在紧邻模块的 mocks/ 子目录中编写模块来定义的。例如,要在 models 目录中模拟一个名为 user 的模块,请创建一个名为 user.js 的文件并将其放在 models/mocks 目录中。

尝试将 mocks 目录移动到 lib 目录

【讨论】:

    猜你喜欢
    • 2021-05-30
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多