我正在为使用performance.now()
的ES6类编写一个jestjs测试。但这似乎不起作用。
是否可以从perf-hooks
全局使用jest.config.js
用户?还是模拟performance
并用例如Date
覆盖它的方法?
我尝试使用classToTest.js
覆盖Date
的性能,但是由于它已经在导入上使用performance
,因此无法正常工作。
简化示例:
classToTest.test.js
import ClassToTest from "./classToTest";
test("constructor works", () => {
expect(new ClassToTest()).not.toBeNull();
});
classToTest.js
const timer = performance.now();
class ClassToTest {
...
jest的输出是
ReferenceError: performance is not defined
。 最佳答案
如果您的Jest
测试环境是jsdom
(默认设置),则它提供了一个包含a mock for performance
on the global Window
object的类似于浏览器的环境,因此将自动定义performance.now
。
如果您的Jest
测试环境是node
,则需要提供自己的全局performance
。
可以通过将安装文件添加到setupFilesAfterEnv
数组来完成:
jest.config.js
module.exports = {
setupFilesAfterEnv: [ './setup.js' ]
}
...并在设置文件中定义全局
performance
:setup.js
global.performance = require('perf_hooks').performance;
关于javascript - jestjs如何测试使用performance.now()的函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57811827/