-2

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

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

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

4

4 回答 4

2

如果您想测试该代码,您需要通过执行类似的操作来存根该调用。

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

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

您没有提供太多用于运行测试用例的框架,以便在带有模拟的 RSpec 中工作。

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

于 2013-02-02T16:49:59.587 回答
1

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

Rails.env.stubs(:production?).returns(true)
于 2013-02-04T06:01:33.450 回答
0

利用

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

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

于 2013-02-08T11:49:17.507 回答
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

于 2013-09-18T04:59:42.350 回答