我正在为使用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 {
...
玩笑的输出是ReferenceError: performance is not defined
。
答案 0 :(得分:0)
如果您的Jest
测试环境为jsdom
(默认设置),则它提供了一个包含a mock for performance
on the global Window
object的类似浏览器的环境,因此performance.now
将被自动定义。 / p>
如果您的Jest
测试环境为node
,则需要提供自己的全局performance
。
可以通过将安装文件添加到setupFilesAfterEnv
数组来完成:
jest.config.js
module.exports = {
setupFilesAfterEnv: [ './setup.js' ]
}
...并且在设置文件中定义了全局performance
:
setup.js
global.performance = require('perf_hooks').performance;