Как: смоделировать axios при передаче конфига с типизацией - PullRequest
0 голосов
/ 10 июля 2019

Глупый вопрос.Я не могу смоделировать axios, когда он использует соглашение о конфигурации (axios (passAConfigObj)).У меня нет проблем с насмешками, когда это axios.get или axios.post.Не пытаясь представить библиотеку, потому что я чувствую, что это можно сделать ..

Я попытался смоделировать метод запроса, который будет использоваться (axios.post).Я попытался смоделировать axios и дать ему возвращаемое значение, но хочет «AxiosPromise».

const mockedAxios = mocked(axios)

mockedAxios.mockImplementationOnce(() => Promise.resolve(2))

ошибка: TS2322: Type 'Promise<number>' is not assignable to type 'AxiosPromise<any>'

//

// auth.spec.ts
import { getAuthToken } from '../auth'

import axios from 'axios'
import { mocked } from 'ts-jest/utils'

jest.mock('axios')

describe('getAuthToken', () => {
  const mockedAxiosPost = mocked(axios)

  it('should return ', () => {
    mockedAxiosPost.mockImplementationOnce(() =>
      Promise.resolve({ data: 'response.data' })
    )

    const authToken = getAuthToken()

    expect(authToken).toEqual()
    expect(mockedAxiosPost).toHaveBeenCalledTimes(1)
    expect(mockedAxiosPost).toHaveBeenCalledWith()

  })
})
// auth.ts
import axios from 'axios'

export const getAuthToken = () => {

  const options = {
    url: `url`,
    method: 'POST',
    headers: {
      Authorization: ''
      'Content-Type': '',
    },
    data: {},
  }

  return axios(options)
    .then(response => {
      return response
    })
    .catch(error => {
      console.log(error.response)
    })
}

Iожидаем, что axios, получивший конфигурацию для внутреннего вызова axios.post, таким образом, работает / проходит мой тест.

У меня есть другие реализации axios.post и axios.get, которые работают с этим стилем тестирования, так что это не проблема.Очевидно, я могу просто изменить свой код, чтобы использовать axios.post, но на данный момент мне любопытно больше всего на свете.Заранее спасибо:)

...