_axios. default.post.mockImplementationOnce не является функцией VuesJS
Я пытаюсь проверить свой вызов API. Я использую:
- VueJS
- Шутка
- Аксиос
Я получил ошибку: "_axios. default.post.mockImplementationOnce не является функцией" , когда я запускаю этот тест:
import axios from 'axios'
let url = ''
let body = {}
jest.mock("axios", () => ({
//__esModule: true,
post: (_url, _body) => {
return new Promise((resolve) => {
url = _url
body = _body
resolve(true)
})
}
}))
//axios.mockResolvedValue();
describe('getGameList', () => {
test('Success: should return the game list of the user and update gameList in the store', async () => {
const response = {
data: [
{ id:1, name:"game_name1" },
{ id:2, name:"game_name2" }
]
};
//axios.post.mockResolvedValue(response);
//OR
axios.post.mockImplementationOnce(() => Promise.resolve(response));
expect(url).toBe("api/game_list_of_user")
expect(body).toStrictEqual({"user_id": 1})
});
});
Есть какие-нибудь зацепки ?
Правка 1: следуя за помощью tmhao2005:
jest.mock("axios", () => ({
post: jest.fn((_url, _body) => {
url = _url
body = _body
return Promise.resolve();
}),
create: jest.fn(function () {
return this;
})
}))
describe('getGameList', () => {
test('Success: should return the game list of the user and update gameList in the store', async () => {
const url = "api/game_list_of_user";
const body = {
"user_id": 1
};
const response = {
data: [
{ id:1, name:"game_name1" },
{ id:2, name:"game_name2" }
]
};
axios.post.mockResolvedValue(response); //OR axios.post.mockImplementationOnce(() => Promise.resolve(response));
expect(url).toBe("api/game_list_of_user")
expect(body).toStrictEqual({"user_id": 1})
expect(axios.post).toHaveBeenCalledTimes(1);
});
});
Но у меня все еще есть эта проблема:
Похоже, мой мнимый Аксиос не называется. метод toHaveBeenCalledTimes-это правильный метод для вызова ?
У вопроса есть решение - Посмотреть?
Ответы - _axios. default.post.mockImplementationOnce не является функцией VuesJS / _axios.default.post.mockImplementationOnce is not a function VuesJS

02.12.2020 07:03:18
Дело в том, что теперь вы издеваетесь над функцией post
своей собственной функцией, которая не является типом jest.Mock
, поэтому метод mockImplementationOnce
не существует.
Другими словами, чтобы исправить это, вы могли бы либо:
- вместо этого верните фиктивную функцию:
jest.mock("axios", () => ({
post: jest.fn((_url, _body) => {
url = _url;
body = _body;
return Promise.resolve();
})
}))
- или если вы больше не заботитесь о
url
/body
, вы просто издеваетесь надaxios
, ничего не реализуя:
jest.mock('axios')
Помочь в развитии проекта: