在Restify中使用testing数据库
我创build了一个简单的Restify服务器,并使用自己的JSONclient通过Mocha开始testing它的function。
当unit testingfunction时,可以设置指示testing设置的ENV var,并连接到相应的mongodb数据库。
但是,当使用JSONClient时,显然,testing已经连接的“运行”API服务器。
是否有任何方法通过开关数据库连接,通过客户端的端到端testingAPIfunction,以不覆盖开发数据库?
编辑:我想我可以添加一个方法沿着“switchDataConnection”的行,将切换到testing数据库,但感觉肮脏和哈克。
一个为我工作的方法是一个env.js
文件和一个config.js
文件。
在config.js
(真正从config-dev.js
和config-prod.js
)我把我所有的configuration设置。 像目录path信息和数据库设置。
例如,这是我的开发数据库连接(我正在使用knexjs包):
var knex = { client : 'mysql', connection : { host : '127.0.0.1', user : 'root', password : 'pass', database : 'testdev', charset : 'utf8' } };
在我的生产configuration中,我只是有一个不同的连接定义。
然后,在env.js
,我需要config.js
文件来加载适当的设置。 在我的unit testing中,我可以加载dev的env.js
,在app.js
我可以加载生产。
合理? 尽pipe如此,您可以对两个不同的DB进行相同的代码testing。
编辑评论:我会build议设置一个testing环境,你可以在不同的端口上启动你自己的API服务器 ,然后运行你的testing(当然这将连接到testing数据库)。