【问题标题】:How to disable rendering the view in ActionController TestCase (Rails 3.0.9)如何在 ActionController TestCase (Rails 3.0.9) 中禁用渲染视图
【发布时间】:2011-07-13 04:02:04
【问题描述】:

禁用 ActionController::TestCase 以实际呈现视图的正确方法是什么? 或者,在测试中没有布局的情况下呈现视图的方法是什么?

使用 rr,我试过了 存根(@controller).render { "" }

但这破坏了 assert_template 断言。

谢谢!

【问题讨论】:

  • 你为什么要这样做?
  • 我真的不记得了。这可能是试图访问在 before_filter 中设置的东西或仅在生产环境中正确初始化的东西。

标签: ruby-on-rails-3 testcase actioncontroller


【解决方案1】:

我遇到了同样的问题,即禁用布局,同时仍渲染主视图。使用 rspec 模拟,这对我有用:

@controller.stub(:layout).and_return(false)

我从未使用过 rr,但我想语法可能如下:

stub(@controller).layout { false }

【讨论】:

    【解决方案2】:

    我想在 Rails 6 中执行此操作。使用 mocha gem:

    ActionController::Metal.any_instance.stubs(:process).returns
    

    对于其他版本的 Rails,确定答案的最简单方法是将puts caller 添加到您的操作中并扫描回溯。找一些看起来很容易存根的东西并尝试一下。

    【讨论】:

      【解决方案3】:

      默认禁用。

      如果您想启用,您可以:

      1) 在 spec_helper 中调用它:

      config.render_views
      

      2) 将此语句放入您的控制器测试类中:

      render_views
      

      如果你想禁用它,只需添加一个 false 参数,如:

      render_views false
      

      参考:https://www.relishapp.com/rspec/rspec-rails/v/2-5/docs/controller-specs/render-views

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-19
        • 2012-09-02
        • 2013-11-19
        • 2023-03-05
        • 1970-01-01
        • 2018-10-27
        • 2023-04-09
        相关资源
        最近更新 更多