Vue.js 如何开玩笑地模仿VueAxios
我想测试我的Api函数,这些函数位于vue组件之外的单独文件中。在这个方法中,我通过Vue.axios调用api,但我找不到像本文中那样模拟和测试它的方法: 示例方法:Vue.js 如何开玩笑地模仿VueAxios,vue.js,testing,jestjs,axios,Vue.js,Testing,Jestjs,Axios,我想测试我的Api函数,这些函数位于vue组件之外的单独文件中。在这个方法中,我通过Vue.axios调用api,但我找不到像本文中那样模拟和测试它的方法: 示例方法: cancelAuction: function (auction_id) { if (validateApiInt(auction_id)) { return Vue.axios.delete(`/auctions/${auction_id}`); } return {}; }, 用法
cancelAuction: function (auction_id) {
if (validateApiInt(auction_id)) {
return Vue.axios.delete(`/auctions/${auction_id}`);
}
return {};
},
用法示例:
const response = await AuctionApi.cancelAuction(id);
好吧,这很明显。我不得不像下面这样嘲笑整个Vue:
jest.mock('vue', () => ({
axios: {
get: jest.fn()
},
}));
好吧,这很明显。我不得不像下面这样嘲笑整个Vue:
jest.mock('vue', () => ({
axios: {
get: jest.fn()
},
}));
开始学习Jest+@vue/test-utils。下面是一个简单的例子,供那些想模仿“vue axios”的人参考
开始学习Jest+@vue/test-utils。下面是一个简单的例子,供那些想模仿“vue axios”的人参考
// test/unit/example.spec.js
import { mount } from '@vue/test-utils';
import HelloWorld from '@/components/HelloWorld.vue';
import axios from 'axios';
jest.mock('axios', () => ({
get: () =>
Promise.resolve({
data: {
results: [{ email: 'mockAxios@email.com' }],
},
}),
}));
describe('HelloWorld.vue', () => {
it('click and fetch data...', async (done) => {
const wrapper = mount(HelloWorld, {
mocks: {
axios,
},
});
await wrapper.find('button').trigger('click');
wrapper.vm.$nextTick(() => {
expect(wrapper.find('h1').text()).toContain('@');
done();
});
});
});