有人告诉我,除了test之外,我不应该在rails_env中运行我的rspec规范。
在生产或开发中运行规范的潜在问题是什么?我在两者中运行规格。我通常在dev中运行规范,除非我正在测试使用资产管道的东西。我转而投入生产并花费15分钟预编译资产。使用测试环境比我现有的方法有什么好处吗?
我搜索了一个答案,但没有解释为什么我不应该使用dev或prod。
答案 0 :(得分:7)
在test
环境中运行测试套件(例如 rspec )旨在隔离资源以解决安全问题,尤其是数据库的完整性。测试通常会破坏或完全删除数据库中的数据。
所有资源都是如此。通过使用test
环境,您可以切断和模拟资源,从而防止测试破坏任何内容。
使用单独环境的原因有很多,但从根本上说它是资源分离,在test
环境中,它可以在确保生产资源安全的同时验证您的应用程序。运行系统。
答案 1 :(得分:3)
让我们明确一点,特别是对于可能正在阅读此帖子的多维数据集:RAILS_ENV=production
(本地)与production
环境中的运行测试“不同。”我知道你(OP)知道这一点,但是在生产环境中运行测试的危险值得警告。
仅在test
env中运行有几个原因,通常与数据库的处理有关:
其他原因也是你已经推测过的那些原因:
可能性过于自定义(对您的应用)以建议最佳实践...但是,不用说,有许多“测试模式”设置可能需要配置rails_ENV=test
答案 2 :(得分:0)
你应该明确你的优先事项。你为什么要运行规格?
我想说,大多数ppl运行规格为2.,这确实应该在测试环境中进行,只是出于NewAlexandrias答案中给出的原因。
如果要在部署后检查1.运行规格对我来说似乎有点牵强。应该有更简单的方法。
当你部署,并且你不确定2.那就是过早部署时,你不应该这样做。