我创建了一个简单的RESTify服务器,并开始使用它自己的JSONclient通过摩卡测试其功能。
当单元测试的功能,它可以设置指示测试设置的的环境变量,并连接到MongoDB的根据数据库。
然而,使用JSONClient你的时候,很明显,测试“跑步” API服务器,它已经连接。
有什么办法由具有结构转换的数据库连接,以不覆盖开发数据库端至端通过客户端测试API功能?
编辑:我想我可以添加一个方法沿着这将切换到测试数据库“switchDataConnection”的线的API,但是那种感觉肮脏,哈克。
为我工作的一种方法是一个env.js
文件和config.js
文件。
在config.js
(真正从复制config-dev.js
和config-prod.js
我把我所有的配置设置)。 事情是这样的目录路径信息和数据库设置。
例如,这是我的开发数据库连接(我使用的是knexjs包):
var knex = {
client : 'mysql',
connection : {
host : '127.0.0.1',
user : 'root',
password : 'pass',
database : 'testdev',
charset : 'utf8'
}
};
在我的生产配置,我只是有不同的连接定义。
然后,在env.js
,我需要的config.js
文件来加载相应的设置。 在我的单元测试,我可以加载env.js
的开发,并在app.js
我可以加载生产。
说得通? 你是在正确的道路上,虽然,它可能有针对两个不同的数据块相同的代码测试。
从评论编辑:我建议建立一个测试环境,在那里你可以在不同的端口上开始自己的API服务器 ,然后运行测试关闭该(这当然会连接到测试DB)。