javascript - 如何测试异步调用以便伊斯坦布尔将覆盖它?
问题描述
我正在测试单元测试我的 API。在我编写完所有测试后,我实现了覆盖工具istanbul
。它涵盖了除了分支之外的所有问题。查看报告后,我发现异步调用没有经过测试,但实际上它们至少运行了 5 次。在这种情况下async
运行了 15 次。
我的测试的小例子:
describe('GET /tables', () => {
it('should GET tables', (done) => {
chai.request(server)
.get('/api/v1/tables')
.then((res) => {
expect(res).to.have.status(200);
expect(res.body).to.be.a('array');
done();
})
.catch((err) => {
done(err)
})
});
})
该测试的部分覆盖率报告:
export default async (req, res) => {
let tables = [];
try {
tables = await Tables.findAndCountAll({
where: {
...req.filter,
material: null
},
// order: sort ? sort : [],
limit: req.pagination.limit,
offset: req.pagination.offset
});
} catch (err) {
console.log(err);
return res.status(500).send({ error: 'Internal server error' });
}
Line1:标记async (r
并说分支未覆盖
解决方案
修复。据我了解这个问题,当 nyc 获得转译代码的覆盖率时,它无法将其映射回原始源,因此当这种情况发生时,nyc 会降低覆盖率。插件babel-plugin-istanbul
解决了这个问题。它支持 ES2015+ 代码,因此它使用 babel 向后兼容。我遵循了这个简单的教程。
推荐阅读
- flutter - 动态混合高度 Flutter 的动画容器
- google-sheets - Adjusting Pivot Chart on Google Spreadsheet
- liquid - 用于在 Azure LogicApps 中将 json 转换为 json 的 Liquid 模板
- c# - 命令超时不抛出
- python - 替换 NumPy 数组的某些给定索引的最有效方法是什么?
- excel - 映射到具有 3 个条件的数据透视表
- python - 卸载了 opencv-python 但仍然可以导入 cv2。这怎么可能?
- pdf - 转换:在 CentOS 中没有定义用于制作 PDF 缩略图的图像
- python - 运行评估问题 - Tensorflow 对象检测 api (EfficentDet)
- java - 测试登录Servlet