Разница между очисткой, сбросом и восстановлением моков

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

Например, эта функция:

const fn = vi.fn()

fn('one')
fn('two')

fn.mock.calls
// [ ["one"], ["two"] ]

В приведенном выше примере функция-заглушка fn имеет состояние, которое отслеживает все вызовы, сделанные к ней. Само состояние не является проблемой. На самом деле, вам это состояние нужно! Оно необходимо для проверки правильного количества вызовов и их аргументов во время теста.

Состояние начинает вызывать проблемы, как только с ним неправильно обращаются.

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

const listener = vi.fn()

test('calls the listener when the event is emitted', () => {
  const emitter = new Emitter()
  emitter.on('hello', listener)
  emitter.emit('hello')
  
  expect(listener).toHaveBeenCalledTimes(1)
})

test('does not call the listener after `.removeAllListeners()` has been called', () => {
  const emitter = new Emitter()
  emitter.on('hello', listener)
  emitter.removeAllListeners()
  emitter.emit('hello')
  
  expect(listener).not.toHaveBeenCalled()
})

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

Чтобы это проверить, мы вводим мок функцию listener, чтобы проверять вызовы.

Но если мы запустим этот набор тестов, мы получим ошибку

Источник: https://habr.com/ru/articles/854336/


Интересные статьи

Интересные статьи

Asp.Net + nginx + kafka + docker + docker-compose + postgersql. Или как из обычного шаблона прийти к такому гибриду.
Космический телескоп «Хаббл» запечатлел тусклую спиральную галактику UGC 11105, расположенную на расстоянии около 110 млн световых лет от Земли. В 2019 году в ней обнаружили сверхновую II типа. Сейчас...
Статья о том, как упорядочить найм1. Информируем о вакансии2. Ведём до найма3. Автоматизируем скучное4. Оформляем и выводим на работу5. Отчитываемся по итогам6. Помогаем с адаптацией...
Много всякого сыпется в мой ящик, в том числе и от Битрикса (справедливости ради стоит отметить, что я когда-то регистрировался на их сайте). Но вот мне надоели эти письма и я решил отписатьс...
В 1С-Битрикс: Управление сайтом (как и в Битрикс24) десятки, если не сотни настраиваемых типов данных (или сущностей): инфоблоки, пользователи, заказы, склады, форумы, блоги и т.д. Стр...