Sobes.tech
Middle
36

სად გამოიყენოთ jest.mock(), jest.fn() და jest.spyOn() ?

კომპანიებმა სადაც სთხოვეს
Лига Цифровой ЭкономикиЛига Цифровой Экономики

პასუხი AI-სგან

sobes.tech AI

jest.mock() используется для автоматического или ручного мокирования целых модулей. Это полезно, когда нужно заменить зависимости модуля на заглушки, чтобы изолировать тестируемый код от внешних эффектов.

jest.fn() создаёт новую мок-функцию, которую можно использовать для отслеживания вызовов, аргументов и возвращаемых значений. Часто применяется для замены колбеков или функций, чтобы проверить, как они вызываются.

jest.spyOn() позволяет «шпионить» за существующими методами объектов, сохраняя их оригинальную реализацию, но при этом отслеживая вызовы. Можно также временно заменить реализацию.

Примеры:

// jest.mock()
jest.mock('./api'); // заменит весь модуль api моками

// jest.fn()
const mockCallback = jest.fn();
someFunction(mockCallback);
expect(mockCallback).toHaveBeenCalled();

// jest.spyOn()
const obj = { method: () => 42 };
const spy = jest.spyOn(obj, 'method');
obj.method();
expect(spy).toHaveBeenCalled();