我正在测试我的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' });
}
第1行:标记async (r
并说分支未被覆盖
答案 0 :(得分:0)
解决了。据我了解这个问题,当nyc获得转译代码的覆盖范围时,它无法将其映射回原始源,因此,当发生这种情况时,nyc会降低覆盖范围。插件babel-plugin-istanbul
修复了该问题。它提供了对ES2015 +代码的支持,因此可以使用babel向后兼容。我遵循了这个简单的tutorial。