我必须在运行测试用例时更改rails环境。
if Rails.env.production?
# Do something
else
# Do something else
end
如何在测试案例中更改我的rails环境。 我使用rails 2.3.16和ruby 1.9.3
答案 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