Объект шутки, исправляющий обезьяну, для всех тестовых файлов

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

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

Отказ от ответственности: я знаю, что это плохо, но мне это нужно только для одноразового бенчмаркинга, и это самое простое решение, которое выполняет свою работу.

У меня это еще не работает, но я нашел статью, в которой описывается что-то подобное. В нем говорится, чтобы обезьяна исправила модуль jest-runtime. petecorey.com/blog/2019/03/25/…

nupanick 26.01.2022 22:18
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
1
262
1

Ответы 1

У меня это работает! Вы правы, 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 */ }

Другие вопросы по теме