следуйте шутливым документам, чтобы издеваться над аксио, но не работает - PullRequest
0 голосов
/ 18 ноября 2018

Я передаю документ-шутку в макетный модуль 'axios'

вот так

// httpCall.js
import axios from 'axios'
export default function httpCall () {
  return axios.get('url/to/the/end/point').then(res => res.data)
}

и мой тестовый файл

import axios from 'axios'
import httpCall from './index'
jest.mock('axios')
test('mock module axios', () => {
  const resp = { data: { id: 1, name: 'John Doe' } }
  axios.mockResolvedValue(resp)
  return httpCall().then(res => expect(res).toEqual(resp.data))
})

и затем получаю эту ошибку

TypeError: _axios.default.mockResolvedValue is not a function

, поэтому я пытаюсь найти его в Google, затем попробуйте Mock inner axios.create ()

create mocks / axios-mock.js

const mockAxios = jest.genMockFromModule('axios')
mockAxios.create = jest.fn(() => mockAxios)
export default mockAxios

, затем обновите мой тестовый файл до этого

import mockAxios from './__mocks__/axios-mock'
import httpCall from './index'
test('mock module axios', () => {
  const resp = { data: { id: 1, name: 'John Doe' } }
  mockAxios.get.mockResolvedValue(resp)
  return httpCall().then(res => expect(res).toEqual(resp.data))
})

, но все равно получена ошибка, как показано ниже

Request failed with status code 404

Я понятия не имею об этом ... нов конце я заставляю его работать ..

это мой фиктивный файл

// __mocks__/axios-mock.js
import axios from 'axios'
const mockAxios = jest.genMockFromModule('axios')
export default axios

// or even like this
import axios from 'axios'
jest.mock('axios')
export default axios

это мой тестовый файл

import httpCall from './index'
import mockAxios from './__mocks__/axios-mock'

describe('mock module', () => {
  it('axios should be mocked', () => {
    const resp = { data: { id: 1, name: 'John Doe' } }
    mockAxios.get = jest.fn().mockResolvedValue(resp)
    return httpCall().then(res => expect(res).toEqual(resp.data))
  })
})

после того, как я пытаюсь переместить аксиос-код макета для проверки файла, как показано ниже

import axios from 'axios'
import httpCall from './index'
const mockAxios = jest.genMockFromModule('axios')

describe('mock module', () => {
  it('axios should be mocked', () => {
    const resp = { data: { id: 1, name: 'John Doe' } }
    mockAxios.get = jest.fn().mockResolvedValue(resp)
    return httpCall().then(res => expect(res).toEqual(resp.data))
  })
})

Я получил эту ошибку снова

Request failed with status code 404

это мой envinfo

System:
    OS: macOS 10.14
    CPU: (4) x64 Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz
  Binaries:
    Node: 10.13.0 - ~/.nvm/versions/node/v10.13.0/bin/node
    Yarn: 1.7.0 - /usr/local/bin/yarn
    npm: 6.4.1 - ~/.nvm/versions/node/v10.13.0/bin/npm
  npmPackages:
    jest: ^23.6.0 => 23.6.0

мой .babelrc

{
  "presets": [
    [
      "@babel/env",
      {
        "modules": "umd"
      }
    ]
  ]
}

my jest.config.js

module.exports = {

}

Я надеюсь, что кто-то может объяснить, почему это так

и документ модуля модуля шутки действительно работает?

1 Ответ

0 голосов
/ 18 ноября 2018

теперь работает, проблема в моем .babelrc файле

должно понравиться

{
  "presets": [
    [
      "@babel/env"
    ]
  ]
}

или

{
  "presets": [
    [
      "@babel/env",
      {
        "modules": "umd"
      }
    ]
  ],
  "env": {
    "test": {
      "presets": [
        [
          "@babel/env"
        ]
      ]
    }
  }
}
...