参考其它测试文档,在学习使用moha及supertest进行单元测试过程中,有这么一句 var app = require(‘…/app’); var request = require(‘supertest’)(app); 需要引用到app.js这个文件。 简单的写法,直接在app.js做出module.exports=app即可。 但是现在碰到一个问题 ======================== ===========分割线============================================================ 我的app.js文件,我想在其中有一个检测数据库是否准备好的操作,检测完成后,再进行启动。正常运行没问题。测试过程中,想不出办法拿到app这个对象。 大致代码如下: 我现在正在思考的问题是怎样才能在app.js这样的环境中,从test获取app这个对象。之前有试过,一直没有尝试好,希望有大神能给说下,Thanks。
@airyland 你好,我按照建议尝试了一下,具体方案如下: 方案一:把var app = express()及后续方法写在数据库判断流程外面,可以使用,不过由于异步的原因,大概有百分之30的几率会出现找不到数据库操作方法的情况。 方案二:在测试情况下,app.js中不再写数据库判断方法,数据库判断操作放在test.js文件的before()中进行,运行正常,不过每次运行时都会有大概1s左右的耗时,方案一的耗时则大概在60ms左右。 这个情况正常么? 还有没有更好的方法了。 十分感谢,已经比之前好很多了。
@airyland 我运行的是test.js这个文件啊,连接数据库是在app.js中执行,访问url是在test.js文件中执行的,我现在在用方案2了,之前时间长的原因是因为setTimeout等的时间太长了。