【发布时间】:2019-01-19 14:40:00
【问题描述】:
如何让我的测试等待我的 api 的结果? 我正在使用 vue 和 jest 来测试我的组件。
我想测试将客户端写入我的数据库的方法。在我的组件中,我有以下方法:
methods: {
onSubmitClient(){
axios.post(`urlApi`, this.dados).then(res => {
return res;
})
}
}
在我的测试中
describe('login.vue', () => {
let wrapper
beforeAll(()=>{
wrapper = mount(client, {
stubs: ['router-link'],
store,
data() {
return {
dados: {
name: 'tes name',
city: 'test city'
},
};
}
})
})
it('store client', () => {
res = wrapper.vm.onSubmitLogin()
console.log(res);
})
})
我的测试不等待 API 调用完成。我需要等待 API 调用才能知道测试是否有效。如何让我的测试等待 API 返回?
【问题讨论】:
-
等待API调用是什么意思?您是否在单元测试中提出实际请求?
-
是的。我提出了真正的要求。我想知道我的组件是否将数据保存在我的 api 中。
-
那不是一个单元测试,你应该为此排除客户端。如果您想针对真实后端测试真实请求,请在更高级别使用 E2E 测试。
-
@jonrsharpe 但你也需要一个测试框架:)。你会在某个时候、某个地方遇到这个问题。通过轮询、订阅事件或代理实际请求来检查正在发出的请求......这是一个有效的问题。
-
我使用 e2e nightwatchjs 开始了测试。只有我无法执行测试,因为 nightwatchjs 无法从 element.io 中选择一个选项。 element.io 的 select 是 ul li 所以不能选择。我决定用 jest 来测试,但这也很难。
标签: unit-testing vue.js vuejs2 jestjs