【发布时间】:2022-02-16 02:04:17
【问题描述】:
我有一个由点击事件触发的异步方法,在该方法中我调用 API 然后处理响应,如下所示:
async confirmName () {
const {name, description} = this.form;
const [data, error] = await Pipelines.createPipeline({name, description});
if (error) {
console.error(error);
this.serviceError = true;
return false;
}
this.idPipelineCreated = data.pipeline_id;
return true;
}
测试看起来像这样:
test("API success", async () => {
const ConfirmNameBtn = wrapper.find(".form__submit-name");
await ConfirmNameBtn.vm.$emit("click");
const pipelinesApi = new Pipelines();
jest.spyOn(pipelinesApi, "createPipeline").mockResolvedValue({pipeline_id: 100});
const {name, description} = wrapper.vm.form;
pipelinesApi.createPipeline().then(data => {
expect(wrapper.vm.pipelineNameServiceError).toBe(false);
wrapper.setData({
idPipelineCreated: data.pipeline_id
});
expect(wrapper.vm.idPipelineCreated).toBe(data.pipeline_id)
}).catch(() => {})
})
一个基本的类模拟:
export default class Pipelines {
constructor () {}
createPipeline () {}
}
我正在测试一个成功的 API 调用,并模拟返回一个已解决的承诺的 API 调用。问题是覆盖范围仅涵盖方法的前两行,而不是我分配 API 调用响应的部分。这是正确的方法吗?
编辑:
报道截图:
【问题讨论】:
标签: vue.js unit-testing async-await jestjs