0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Они действительно похожи, но есть различия.</p>
1
<p>Они действительно похожи, но есть различия.</p>
2
<p>jest.fn() создан чтобы полностью подменять на свою реализацию (мокинг), то есть если вы, например, не хотите, чтобы вызывались какие-то реальные запросы в базу данных при тестировании или какие-то другие побочные эффекты.</p>
2
<p>jest.fn() создан чтобы полностью подменять на свою реализацию (мокинг), то есть если вы, например, не хотите, чтобы вызывались какие-то реальные запросы в базу данных при тестировании или какие-то другие побочные эффекты.</p>
3
<p>jest.spyOn() же позволяет просто отслеживать что функция была вызвана, без подмены реализации этой функции. jest.spyOn() так же умеет и подменять реализацию (как и jest.fn()), но он умеет это делать на время. То есть, если вы хотите сохранить оригинальную реализацию функции и может быть вызывать её при каких-то сценариях, тот тут понадобится jest.spyOn().</p>
3
<p>jest.spyOn() же позволяет просто отслеживать что функция была вызвана, без подмены реализации этой функции. jest.spyOn() так же умеет и подменять реализацию (как и jest.fn()), но он умеет это делать на время. То есть, если вы хотите сохранить оригинальную реализацию функции и может быть вызывать её при каких-то сценариях, тот тут понадобится jest.spyOn().</p>
4
<p>На самом деле jest.spyOn() - это просто синтаксический сахар. То же самое мы можем сделать используя базовый метод jest.fn(). Для этого нужно сохранять базовую реализацию и подменять её обратно, когда это нужно:</p>
4
<p>На самом деле jest.spyOn() - это просто синтаксический сахар. То же самое мы можем сделать используя базовый метод jest.fn(). Для этого нужно сохранять базовую реализацию и подменять её обратно, когда это нужно:</p>
5
<h2>Возможные проблемы</h2>
5
<h2>Возможные проблемы</h2>
6
<p>Ошибка вида</p>
6
<p>Ошибка вида</p>
7
<p>TypeError: Cannot assign to read only property 'add' of object '[object Module]'</p>
7
<p>TypeError: Cannot assign to read only property 'add' of object '[object Module]'</p>
8
<p>связана с особенностью экспорта из модуля, из которого отслеживается функция. Например, такой экспорт будет работать для примеров выше:</p>
8
<p>связана с особенностью экспорта из модуля, из которого отслеживается функция. Например, такой экспорт будет работать для примеров выше:</p>
9
9