Как я могу исправить некоторые методы в глобальном jest объекте для всех тестовых файлов одновременно? Я не хочу добавлять какой-либо дополнительный код в мои тестовые файлы, это должно быть сделано где-то в настройках, и это может быть уродливым хаком.
Я пытался сделать это из пользовательской среды, setupFiles и setupFilesAfterEnv, но похоже, что все они получают разные экземпляры объекта jest, и мои изменения не видны в тестовых файлах.
Отказ от ответственности: я знаю, что это плохо, но мне это нужно только для одноразового бенчмаркинга, и это самое простое решение, которое выполняет свою работу.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


У меня это работает! Вы правы, Jest реконструирует глобальный объект jest для каждого теста, но вы можете переопределить функцию, которую он использует для этого. В jest.config.js установите globalSetup что-то вроде <rootDir>/jest-global-setup.js. Затем в jest-global-setup.js добавьте это:
const jestRuntime = require('jest-runtime');
const { _createJestObjectFor } = jestRuntime.prototype;
jestRuntime.prototype._createJestObjectFor = function(...args) {
// Call the original function to create a normal jest object.
const jestObject = _createJestObjectFor.apply(this, args);
// Apply your changes.
jestObject.isMonkeyPatched = true;
// Return the patched object.
return jestObject;
}
// Jest expects to find a function of some sort as well,
// but we don't need it for this example.
module.exports = function() { /* do nothing */ }
У меня это еще не работает, но я нашел статью, в которой описывается что-то подобное. В нем говорится, чтобы обезьяна исправила модуль
jest-runtime. petecorey.com/blog/2019/03/25/…