在Jest测试环境中使用Jest

efzxgjgh  于 2023-03-27  发布在  Jest
关注(0)|答案(1)|浏览(227)

我创建了一个Jest测试环境,在其中模拟了一个特定的模块:

const NodeEnvironment = require('jest-environment-node');
const { lumigo } = require('../../src/services/lumigo');

class TestEnvironment extends NodeEnvironment {
  async setup() {
    await super.setup();
    jest.mock('../../src/services/lumigo');
    lumigo.trace = jest.fn((func) => func);
  }

  async teardown() {
    await super.teardown();
  }

  getVmContext() {
    return super.getVmContext();
  }
}

module.exports = TestEnvironment;

我将测试配置为使用此测试环境,如下所示:

/**
 * @jest-environment ./tests/test-environment.js
 */

... rest of the test

但是,当我运行测试时,我得到以下错误:

ReferenceError: jest is not defined

如果在我的测试环境文件的顶部,我尝试添加:

const jest = require('jest');

我得到一个Jest is automatically in scope. Do not import "jest", as Jest doesn't export anything的警告,测试仍然失败。
如何在测试环境中使用jest(例如调用jest.mock)?

s5a0g9ez

s5a0g9ez1#

我认为问题是你试图从你的类中调用mock。jest.mock('../../src/services/lumigo');你可能还需要在你的jest配置中提到这个文件。可能在setupFilesAfterEnv属性中。
通过设计,jest.mock表达式甚至在导入之前被提升和调用,尽管传统上它们通常出现在文件中的导入下面。如果你想防止这种行为,你可以使用jest.doMock
在一个正确配置的jest环境中,你将不需要导入jest。我不确定它是如何工作的,但是一旦你配置了jest,它就可以在全球范围内使用了。

相关问题