使用Restify的测试数据库

时间:2014-03-04 13:52:33

标签: node.js testing mongoose mocha restify

我创建了一个简单的Restify服务器,并开始使用自己的JSONclient通过Mocha测试其功能。

当单元测试功能时,可以设置一个表示测试设置的ENV var,并连接到相应的mongodb数据库。

但是,在使用JSONClient时,显然,测试已经连接的“正在运行”的API服务器。

有没有办法通过切换数据库连接来通过客户端端到端测试API功能,而不是覆盖开发数据库?

编辑:我想我可以按照“switchDataConnection”的方式向api添加一个方法,该方法会切换到测试数据库,但是感觉很脏,而且很糟糕。

1 个答案:

答案 0 :(得分:1)

对我有用的方法是env.js文件和config.js文件。

config.js中(真的从config-dev.jsconfig-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服务器,然后运行您的测试(这当然会连接到测试数据库。)