测试环境和测试数据库

时间:2015-09-01 17:57:15

标签: unit-testing tdd mocha should.js

考虑使用测试数据库来运行测试。一种方法是通过环境变量设置数据库配置,我看到很多人这样做(例如:Test environment in Node.js / Express application)。     然而,对我来说这似乎有点危险。所有它需要的是,在将来的某个时候,错误地,env变量被设置为开发或生产,突然我们将搞乱(甚至擦除)错误的数据库。     有更好的方法吗?

(我正在使用node / mocha / should.js来运行我的测试)

1 个答案:

答案 0 :(得分:3)

将生产与开发完全分开:不同的服务器,不同机器上的数据库等。这消除了很多搞乱的机会。这就是说...

不要编写一个配置文件,该文件将根据环境变量设置不同的配置值。相反,让环境变量选择完全不同的配置文件。您的应用可以阅读<env>,其中MYAPP_ENV是环境变量MYAPP_ENV=production的值。因此,如果您设置config_production.js,则会读取文件config_....js以设置配置。您可以从应用程序的代码中存储各种MYAPP_ENV=dev个文件单独。 (如果需要,可以使用其他存储库。)然后,在部署时,仅将生产配置复制到部署服务器。这样一来,如果您在某个时候设置GCMBroadcastReceiver,那么您的应用程序将无法找到配置文件并且会崩溃而不是做有害的事情。

为了最大限度地提高安全性,强制自己手动编写每个配置文件,而不是剪切和粘贴从开发到生产的配置行。有一天你剪切和粘贴参数以访问资源可以被两个网站访问,你忘了改变它以进行生产,你会后悔切割和粘贴。