Я пытаюсь написать пробный тест, используя jest и @vue/test-utils, Вот файл "bots.spec.js"/test.
jest.mock('axios', ()=>({
getBots: () => {
const result = {
__esModule: true,
data: () => ({
name: "demo",
_id: "62e8d832afdaad001b65bff5",
})
}
return Promise.resolve(result)
}
}))
let getBots;
describe('Load bots function', () => {
beforeEach(async () => {
jest.clearAllMocks()
getBots = (await import('../../src/services')).default
})
it('Should load given bots', async() =>{
const bot_Name = "demo"
const bot_id = "62e8d832afdaad001b65bff5"
const actual = await getBots(bot_id)
expect(actual).toMatch(bot_Name)
})
})
Произошла следующая ошибка
TypeError: _axios.default.get is not a function
Вы можете издеваться над этим и выбрать значение, возвращаемое позже
jest.mock('axios', () => ({
get: jest.fn(),
}));
Возвращаемое значение может быть установлено следующим образом
it('Should load given bots', async() =>{
(mockAxios.get as jest.Mock).mockImplementationOnce(() =>
Promise.resolve({
data: {
name: "demo",
_id: "62e8d832afdaad001b65bff5",
}
})
);
const bot_Name = "demo"
const bot_id = "62e8d832afdaad001b65bff5"
const actual = await getBots(bot_id)
expect(actual).toMatch(bot_Name)
})
это работа для меня
jest.mock('axios', ()=>({
get: () => {
const result = {
data:{
name: "demo",
_id: "62e8d832afdaad001b65bff5",
}
}
return Promise.resolve(result)
}
}))
let getBots;
describe('Load bots function', () => {
beforeEach(async () => {
jest.clearAllMocks()
getBots = (await (await import('../../src/services')).getBots)
})
it('Should load given bots', async() =>{
const expectedResponse = {
name: "demo",
_id: "62e8d832afdaad001b65bff5",
}
const actual = await getBots()
expect(actual.data).toStrictEqual(expectedResponse)
})
})
Ваши тестовые двойники должны соответствовать интерфейсу того, что они заменяют. В этом случае вы, похоже, издевались над Axios и заменили его чем-то, что имеет интерфейс того, что вы должны тестировать.