Глупый вопрос.Я не могу смоделировать 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, но на данный момент мне любопытно больше всего на свете.Заранее спасибо:)