在运行测试用例时更改环境

时间:2013-02-02 15:06:26

标签: ruby-on-rails unit-testing

我必须在运行测试用例时更改rails环境。

if Rails.env.production?
  # Do something
else
  # Do something else
end

如何在测试案例中更改我的rails环境。 我使用rails 2.3.16和ruby 1.9.3

4 个答案:

答案 0 :(得分:2)

如果你想测试那段代码,你需要通过做这样的事情来存根。

Rails.stub_chain(:env, :production?).and_return(true)

这基本上会使对Rails.env.production?的任何调用都返回true。

您没有提供很多用于运行测试用例的框架,因此可以在RSpec中使用模拟。

这将使您正在进行的任何调用进入该代码块,以便您可以针对它编写测试。

答案 1 :(得分:1)

如果您使用RSpec,要测试上面提到的代码,您可以更改@Leo所述的环境。 如果您使用Rails内置框架来编写测试用例,那么您可以这样做。

Rails.env.stubs(:production?).returns(true)

答案 2 :(得分:0)

使用

Rails.env.stubs(:production?).returns(true)

如果您使用rails内置测试框架来编写测试用例。

答案 3 :(得分:0)

这个问题更明确地表达出来(见下文)。我尝试将这些作为原始问题的编辑提交,但一些“智能”评论者决定拒绝我的编辑。有趣的是,那些拒绝我编辑的人似乎对ruby / rails没有经验

我必须为一段依赖于rails环境的应用程序代码编写测试用例。代码如下:

if Rails.env.production?
   # Do something
else
   # Do something else
end

如何在我的测试用例中模拟rails环境,以便我可以测试逻辑的if部分和else部分?

我正在使用rails 2.3.16和ruby 1.9.3