@Wayne1212121

Для чего используются моки в jest?

Всем привет

Есть компонент Foo
<template>
  <button @click="fetchResults" />
</template>

<script>
  import axios from 'axios'

  export default {
    data() {
      return {
        value: null
      }
    },

    methods: {
      async fetchResults() {
        const response = await axios.get('mock/service')
        this.value = response.data
      }
    }
  }
</script>


Тест для компонента Foo
import { shallowMount } from '@vue/test-utils'
import Foo from './Foo'
jest.mock('axios') //что значит эта строчка и что она делает?

it('делает асинхронный запрос при нажатии кнопки', done => {
  const wrapper = shallowMount(Foo)
  wrapper.find('button').trigger('click')
  wrapper.vm.$nextTick(() => { //код грузится 5 секунд и тесты обрываются
    expect(wrapper.vm.value).toBe('value')
    done()
  })
})


Пример взят из документации

В итоге я не понимаю в чем смысл строки jest.mock('axios'), когда мы пытаемся дернуть реальный запрос из компонента, который в итоге не работает.
Подскажите как это работает? Уже 3й день бьюсь и ничего не могу найти((

Заранее большое спасибо!
  • Вопрос задан
  • 159 просмотров
Решения вопроса 1
@dimoff66
Кратко о себе: Я есть
После
jest.mock('axios')

и перед
wrapper.find('button').trigger('click')

должна идти строчка
axios.get.mockResolvedValue(someMockData);

В someMockData вы передаете фейковые данные, которые должен возвратить axios вместо реального запроса к серверу. Если вам нужны реальные данные с сервера, строчка
jest.mock('axios')

не нужна
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы