我有个拉拉项目。我正在尝试测试一个vue组件,它显示了错误:这是我的测试: test.spec.js
import { mount } from '@vue/test-utils';
import expect from 'expect';
import moxios from 'moxios';
import Post from '../../resources/js/components/Component.vue';
describe('Component',()=>{
let wrapper;
beforeEach(() => {
moxios.install();
wrapper = mount(Component, {
propsData: {
data: {
id: 1,
name: 'Test'
lastname: 'Test
}
}
});
});
afterEach(() => {
moxios.uninstall();
});
it.only('updates the profile user after being liked', (done) => {
click('button.like');
moxios.wait(() => {
let request = moxios.requests.mostRecent()
request.respondWith({
status: 200
}).then(function () {
seeText('1 likes')
done()
})
});
});
let click = selector => {
wrapper.find(selector).trigger('click');
};
});这是组件: Component.vue
<template>
<div class="profile">
<div>
{{ name }}
</div>
<div>
{{ lastname}}
</div>
<button class="like" @click="like">Like</button>
</div>
</template>
<script>
export default {
props:['data'],
data(){
return {
id:this.data.id,
name: this.data.name,
lastname :this.data.lastname
.......
};
},
methods:{
like(){
axios.post(`/user/${this.id}/likes`);
......
}
}
}
</script>测试表明: axios没有定义,但在资源/js/bootstrap.js中是全局定义的。
window.axios = require('axios');它在浏览器上工作!
然后我在Component.vue中添加了这个
<script>
import axios from 'axios';
.....
</script>现在我的测试效果很好。但是如果移除它,它就会再次失败。我只是想知道为什么会发生这种情况,我不确定是否必须将导入axios从' axios ';添加到每个只为测试使用axios的组件中。
发布于 2020-04-21 13:16:25
在您的setup.js中添加这样的axios:
require('jsdom-global')();
global.axios = require('axios');https://stackoverflow.com/questions/60980920
复制相似问题