使用带的RESTify测试数据库(Using a testing database with Res

2019-10-19 11:40发布

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

当单元测试的功能,它可以设置指示测试设置的的环境变量,并连接到MongoDB的根据数据库。

然而,使用JSONClient你的时候,很明显,测试“跑步” API服务器,它已经连接。

有什么办法由具有结构转换的数据库连接,以不覆盖开发数据库端至端通过客户端测试API功能?

编辑:我想我可以添加一个方法沿着这将切换到测试数据库“switchDataConnection”的线的API,但是那种感觉肮脏,哈克。

Answer 1:

为我工作的一种方法是一个env.js文件和config.js文件。

config.js (真正从复制config-dev.jsconfig-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)。



文章来源: Using a testing database with Restify