如何无需在推荐的框架中编写测试用例即可获得 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 应用程序的代码覆盖率?的主要内容,如果未能解决你的问题,请参考以下文章

8-5接口测试用例设计与编写

为 Preact 编写单元测试用例

基于jmeter+ant实现的接口自动化测试

如何在 jasmine 中编写单元测试用例?

利用unittest框架编写web测试用例(demo)

用例结构优化心得