我创建了一个简单的Restify服务器,并开始使用自己的JSONclient通过Mocha测试其功能。
当单元测试功能时,可以设置一个表示测试设置的ENV var,并连接到相应的mongodb数据库。
但是,在使用JSONClient时,显然,测试已经连接的“正在运行”的API服务器。
有没有办法通过切换数据库连接来通过客户端端到端测试API功能,而不是覆盖开发数据库?
编辑:我想我可以按照“switchDataConnection”的方式向api添加一个方法,该方法会切换到测试数据库,但是感觉很脏,而且很糟糕。
答案 0 :(得分:1)
对我有用的方法是env.js
文件和config.js
文件。
在config.js
中(真的从config-dev.js
和config-prod.js
复制)我放了所有配置设置。目录路径信息和数据库设置之类的东西。
例如,这是我的dev DB连接(我正在使用knexjs包):
var knex = {
client : 'mysql',
connection : {
host : '127.0.0.1',
user : 'root',
password : 'pass',
database : 'testdev',
charset : 'utf8'
}
};
在我的生产配置中,我只是定义了一个不同的连接。
然后,在env.js
中,我需要config.js
文件来加载适当的设置。在我的单元测试中,我可以为dev加载env.js
,在app.js
我可以加载以进行生产。
有意义吗?虽然您在正确的道路上,但可以对两个不同的DB进行相同的代码测试。
来自评论的编辑:我建议您设置一个测试环境,您可以在不同的端口上启动自己的API服务器,然后运行您的测试(这当然会连接到测试数据库。)