在不调用开发环境的情况下运行Rails测试的正确方法是什么?

时间:2013-03-19 13:56:51

标签: ruby-on-rails testing environment

我有一个Rails应用程序,带有一些初始化代码,当应用程序在开发模式下运行时必须执行这些代码。但是,运行测试时不得执行此初始化程序代码。

我已经建立了

$ rake test

导致应用程序在开发模式下运行,该模式调用初始化程序代码,因此会破坏我的测试。这显然是预期的行为(参见:https://github.com/rails/rails/issues/9801)。

在开发模式下启动应用程序时运行Rails应用程序测试的正确命令是什么?

3 个答案:

答案 0 :(得分:1)

您的test_helper.rb文件是否与default类似?它应该从:

开始
ENV["RAILS_ENV"] = "test"

答案 1 :(得分:0)

尝试使用显式环境运行rake任务:

rake test:units RAILS_ENV=test

如果您没有指定环境,根据我的经验,假定开发。虽然测试数据库仍然会将夹具数据插入其中,但开发环境中的内容仍会因某种原因被引用。

答案 2 :(得分:0)

你需要在test_helper.rb文件的开头写一行

Rails.env = "test"

你不能使用

ENV["RAILS_ENV"] = "test"

因为它无法清除从Rails.env调用返回的缓存值。