新手求教,如何给 Express 网页应用编写单元测试以及代码覆盖率测试?有没有比较简单的例子可供参考吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
DoraJDJ
V2EX    Node.js

新手求教,如何给 Express 网页应用编写单元测试以及代码覆盖率测试?有没有比较简单的例子可供参考吗?

  •  
  •   DoraJDJ 2016-06-29 23:44:44 +08:00 3311 次点击
    这是一个创建于 3399 天前的主题,其中的信息可能已经有所发展或是发生改变。
    之前在 Google 里搜索过一些教程,不过好像很多都比较偏 RESTful API 相关,而且好像没有比较直观明了的案例。
    10 条回复    2016-06-30 22:31:42 +08:00
    ncwhale
        1
    ncwhale  
       2016-06-30 00:07:03 +08:00   1
    mocha + istanbul + should + 任何一个你用的习惯的 Node HTTP 库
    DoraJDJ
        2
    DoraJDJ  
    OP
       2016-06-30 00:09:38 +08:00
    @ncwhale 相当于先启动 Web 服务器,然后通过 request 之类的库一个个访问地址进行测试吗?
    ncwhale
        3
    ncwhale  
       2016-06-30 00:18:57 +08:00
    @DoraJDJ 当然是这样喵……
    haozhang
        4
    haozhang  
       2016-06-30 08:49:18 +08:00 via iPhone   1
    如果是 express 的话有一个配套的测试库,不过名字忘了。其实测试也分很多,像你提到的开 request 去测试属于功能测试而不是单元测试。
    DoraJDJ
    &nsp;   5
    DoraJDJ  
    OP
       2016-06-30 10:31:32 +08:00
    @haozhang 我记得像 Mocha 还有 Istanbul 都有非官方开发的 Express 中间件,但是这样只能用在人工测试环境,不方便用在 CI 上
    ncwhale
        6
    ncwhale  
       2016-06-30 10:38:40 +08:00
    顺便现在都在用 koa@next 做开发了喵~ express 暂时都没在用了喵~
    FlowMEMO
        7
    FlowMEMO  
       2016-06-30 21:39:33 +08:00
    楼主想进行哪种测试? 一种测试是测试页面的功能,比如点击按钮背景变色这种. 另一种是测试 api ,比如向哪个地址发请求应该返回什么东西. 这两种方法是不一样的.
    DoraJDJ
        8
    DoraJDJ  
    OP
       2016-06-30 21:44:20 +08:00
    @FlowMEMO 这是我之前用 Node.js 写的网页应用: https://github.com/DoraJDJ/project-television
    最近开了 Greenkeeper 后,每次提醒依赖更新的时候都会提醒 Untested (未测试),这样我就不能确定依赖更新后程序还能不能用。
    所以我想弄个应用测试,这样每次依赖更新的时候就能进行自动化的测试,以确定会不会出问题。
    FlowMEMO
        9
    FlowMEMO  
       2016-06-30 22:27:17 +08:00   1
    你这个前后端都要做测试了
    前端测试用可以直接上 headless browser, jasmine, casperjs 或者 seleuim 都可以,试一试.
    后端测试相对简单些,楼上说的都可以.

    如果不知道怎么开始的话可以看我之前造过的两个简单轮子, 都托管在 travis-ci 上了
    https://github.com/flowmemo/can-i-reach-google 前端测试, 用的 casperjs.
    https://github.com/flowmemo/koa-httpany 这个有后端测试,有代码覆盖率统计.

    这两个都非常简单,估计你看一下就知道对测试有个概念了.
    FlowMEMO
        10
    FlowMEMO  
       2016-06-30 22:31:42 +08:00
    @FlowMEMO 说错了 jasmine 不是 headless browser ,剩下几个是才是
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2278 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 15:56 PVG 23:56 LAX 08:56 JFK 11:56
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86