node项目mocha自动化测试的疑问

测试框架:mocha
数据库:mysql和mongodb

疑问1. 如何控制多个测试用例的运行顺序?用例写多了,A用例把数据变成了状态1,有些后面的用例基于这个状态1的数据进行查询判断,才能使得后面的用例正常运行,可是由于很多异步,用例A可能没运行完,后面的就跑起来了,数据都不对头,我希望能确保A用例跑完了再跑后面的,就是定义运行顺序


疑问2. 除了定义顺序以外,还能否定义依赖,在不调整顺序的情况下,用例声明依赖某个用例运行成功才运行,否则就skip,类似PHP的PHPUnit的@depends


疑问3. 许多用例对数据库进行了各种增删改查,在不编写删除/更新代码对数据进行恢复的情况下让数据恢复。我用PHP开发的时候解决方案是这样的:将一个定义好的mysql数据库导出sql文件,配置给PHP的测试框架,该测试框架每次启动时会清空数据库,然后导入这个sql文件,于是数据库就构建成了这个sql的内容,所有测试代码都是基于这个内容状态进行测试,怎么改都无所谓,反正下次启动的时候数据库又会被恢复,我希望node在这方面也有一个解决方案可以做到这样,否则的话也只好我自己开发这样的自动清空数据库和重新导入的模块了

阅读 3.2k
1 个回答

1.
it('test some async function', done => {...})
你可以传入done函数,当异步结束完最后调用done,这样就可以定义运行顺序了。
async函数就不用传入done了,自己用await控制好就行

如果要定义不同文件之间的运行顺序,比如A要在B之前,只需在B的第一行加上require('./A')即可

2.
这个可以自己定义变量来控制顺序的吧。。或者可以看看mocha的官方文档

3.
before(() => {...})
在before函数里定义单测之前要执行的函数,一个比较好的实践方式就是,先删库,再跑单测。
如果要准备数据,可以专门写一个prepare.js,然后在单测文件的第一行require('./prepare')即可。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题