【发布时间】:2012-08-22 23:15:58
【问题描述】:
我在 Rails 3.2 上,我正在使用 rspec (2.11.1)。当我使用“rake spec”运行我的测试套件时,我遇到了失败。当我用“rspec”运行它时,一切都通过了。我看到其他人提到过这个问题,但没有任何明确的解释可以解释发生了什么以及最佳实践是什么。
如果我执行“rake spec”或“rake tmp:clear && rake spec”,我的测试将失败。
如果我执行“rspec”或“rspec spec”或“rake db:test:prepare && rspec”,我的测试将通过。
我认为唯一的区别是 rake 执行了“db:test:prepare”,但如果我在运行 rspec 之前手动执行此操作,我的测试就通过了,所以这并不是故事的全部。
在做了一些阅读之后,我更改了我的 Gemfile。以前我按照“The RSpec Book”(p328)进行了设置,其中描述了将 rspec gem 放入“group :development, :test”块中。在阅读了其他一些 SO 帖子后,我删除了 ":development" 并做了一个捆绑。现在“rake spec”什么都不做。 “rspec”仍然像以前一样工作。
很迷茫……
【问题讨论】:
-
做了一些进一步的探索。根据 rspec 书(带有:development,:test)的 Gemfile,运行 rspec 使用“测试”环境,而 rake 规范使用“开发”环境。现在不知道为什么会这样,但会继续寻找......
-
"RAILS_ENV='test' rake spec" 有效。我本来希望测试默认为测试环境,而不必具体说明...
-
我的答案已被删除(由@bhargav-rao 提供)与stackoverflow.com/questions/15701298/… 重复
标签: ruby-on-rails rspec rake