测试环境和测试数据库
Test environment and test database
考虑有一个测试数据库来运行你的测试。一种方法是通过环境变量设置数据库配置,我看到很多人这样做(例如:Test environment in Node.js / Express application)。
但是,对我来说这似乎有点危险。它所需要的只是在将来的某个时候,错误地将 env 变量设置为开发或生产,突然间我们会弄乱(甚至擦除)错误的数据库。
有更好的方法吗?
(我正在使用 node/mocha/should.js 来 运行 我的测试)
运行 生产与开发完全分开:不同的服务器、不同机器上的数据库等。这消除了很多搞砸的机会。话虽这么说...
不要编写一个 配置文件,它会根据环境变量设置不同的配置值。相反,让环境变量 select 和 完全不同的配置文件 。您的应用程序可以读取 config_<env>.js
,其中 <env>
是环境变量 MYAPP_ENV
的值。因此,如果您设置 MYAPP_ENV=production
,那么将读取文件 config_production.js
以设置配置。您将各种 config_....js
文件与您的应用程序代码 分开存储 。 (如果需要,可以使用不同的存储库。)然后,在部署时,只需将生产配置复制到部署服务器。这样,如果您在某个时候通过设置 MYAPP_ENV=dev
搞砸了,您的应用程序将找不到配置文件并且会崩溃而不是做一些有害的事情。
为了最大限度的安全,强制 自己手动编写每个配置文件,而不是从开发到生产的过程中剪切和粘贴配置行。有一天你剪切和粘贴参数来访问一个资源可以被两个站点访问,而你忘记更改它以用于生产,你会后悔剪切和粘贴的。
考虑有一个测试数据库来运行你的测试。一种方法是通过环境变量设置数据库配置,我看到很多人这样做(例如:Test environment in Node.js / Express application)。 但是,对我来说这似乎有点危险。它所需要的只是在将来的某个时候,错误地将 env 变量设置为开发或生产,突然间我们会弄乱(甚至擦除)错误的数据库。 有更好的方法吗?
(我正在使用 node/mocha/should.js 来 运行 我的测试)
运行 生产与开发完全分开:不同的服务器、不同机器上的数据库等。这消除了很多搞砸的机会。话虽这么说...
不要编写一个 配置文件,它会根据环境变量设置不同的配置值。相反,让环境变量 select 和 完全不同的配置文件 。您的应用程序可以读取 config_<env>.js
,其中 <env>
是环境变量 MYAPP_ENV
的值。因此,如果您设置 MYAPP_ENV=production
,那么将读取文件 config_production.js
以设置配置。您将各种 config_....js
文件与您的应用程序代码 分开存储 。 (如果需要,可以使用不同的存储库。)然后,在部署时,只需将生产配置复制到部署服务器。这样,如果您在某个时候通过设置 MYAPP_ENV=dev
搞砸了,您的应用程序将找不到配置文件并且会崩溃而不是做一些有害的事情。
为了最大限度的安全,强制 自己手动编写每个配置文件,而不是从开发到生产的过程中剪切和粘贴配置行。有一天你剪切和粘贴参数来访问一个资源可以被两个站点访问,而你忘记更改它以用于生产,你会后悔剪切和粘贴的。