我正在为一个使用performance.now()
的ES6类编写一个jestjs测试,但是它似乎不起作用。
有没有办法从jest.config.js
全局使用perf-hooks
?或者有没有办法模仿performance
并用Date
覆盖它?
我尝试过用Date
覆盖classToTest.js
上的性能,但由于它使用了导入时已经存在的performance
,因此不起作用。
简化示例:
类到测试.测试.js
import ClassToTest from "./classToTest";
test("constructor works", () => {
expect(new ClassToTest()).not.toBeNull();
});
类到测试.js
const timer = performance.now();
class ClassToTest {
...
jest的输出是ReferenceError: performance is not defined
。
1条答案
按热度按时间z9ju0rcb1#
如果您的
Jest
测试环境是jsdom
(默认值),那么它提供了一个类似浏览器的环境,其中包括全局Window
对象上的performance
模拟,因此performance.now
将被自动定义。如果您的
Jest
测试环境是node
,那么您需要提供自己的performance
全局环境。这可以通过向
setupFilesAfterEnv
数组添加一个安装文件来完成:...并在设置文件中定义全局
performance
: