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