如何无需在推荐的框架中编写测试用例即可获得 nodejs 应用程序的代码覆盖率?
Posted
技术标签:
【中文标题】如何无需在推荐的框架中编写测试用例即可获得 nodejs 应用程序的代码覆盖率?【英文标题】:How to get code coverage of nodejs application without having to write test cases in recommended frameworks? 【发布时间】:2021-10-25 06:28:00 【问题描述】:建议使用 Mocha、chai 或 jest 等框架来利用 istanbul 获取代码覆盖率。
我设计了一个测试工具,它会向 api 发送一个请求,并根据响应,它会被称为通过或失败。
有效负载和预期结果显示在 Excel 工作表中。对于每一行,它将发送相应列中存在的有效负载,并将响应与我们得到的实际响应进行比较。在这种类型的环境下,我是否能够获得我的应用程序的代码覆盖率。
【问题讨论】:
是的,覆盖率为0 我也想不做任何运动来健身。 @Matt 我将在外部触发一组路由,这将涵盖应用程序代码。如何获得代码覆盖率? @seesharper 亲爱的,如前所述,我正在从外部触发路线,这将涵盖我的应用程序,我想这显然不像不锻炼就变得健康 :) 好的,但是你的问题还不清楚。 【参考方案1】:nyc
可以检测任何节点进程(构建环境越复杂,设置就越复杂)。
nyc node server.js
您只需要一种在测试结束时关闭的方法。
可以添加条件终结路由
if (process.env.NODE_ENV === 'test' )
router.post('/shutdown', ctx =>
database.close()
server.close()
ctx.body = 'Shutting down'
)
然后通过nyc
运行测试服务器
yarn add --dev nyc
NODE_ENV=test ./node_modules/.bin/nyc node server.js
然后你会得到报告和.nyc_output
目录
-----------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
-----------|---------|----------|---------|---------|-------------------
All files | 58.33 | 100 | 50 | 66.67 |
server.js | 58.33 | 100 | 50 | 66.67 | 15-17
-----------|---------|----------|---------|---------|-------------------
【讨论】:
完美答案!!关闭部分确实令人惊叹,因为我只是在执行 ctrl + c 来关闭进程,这并没有给我结果。在为其创建 API 之后,我得到了覆盖。谢谢!!! 你可以添加一个 process.on SIGINT/SIGTERM 处理程序来运行任何漂亮的关闭代码,如果需要的话以上是关于如何无需在推荐的框架中编写测试用例即可获得 nodejs 应用程序的代码覆盖率?的主要内容,如果未能解决你的问题,请参考以下文章