【问题标题】:Disable render when testing a controller测试控制器时禁用渲染
【发布时间】:2009-05-07 17:36:34
【问题描述】:

我正在使用 Test::Unit 和 shoulda 来测试控制器。

因为我只是在测试控制器,所以我不想渲染视图。

我正在存根一些对象,渲染视图时会抛出一些错误,但测试不应该失败,因为控制器是正确的。

那么,有什么方法可以从我的测试中禁用模板/视图的呈现?

我听说 rSpec 就是这样工作的。

【问题讨论】:

    标签: ruby-on-rails tdd rspec shoulda


    【解决方案1】:

    如果您使用的是 Mocha,这很容易。将此添加到您的个人测试或设置方法中:

    @controller.expects(:render)
    

    如果你不是,那么,使用摩卡。

    gem install mocha
    

    然后在你的 test_helper.rb 中

    require 'mocha'
    

    【讨论】:

      【解决方案2】:

      您不应该在测试中看到任何视图。您可以发布失败的测试代码吗?控制器(功能)测试应该只检查调用您的操作时是否正在发生特定操作。即它应该检查它是否呈现正确的视图或重定向到不同的操作。您还可以检查闪光灯的设置或视图的其他变量。这是您要测试的类型吗?

      这是一个很好的示例,它使用从 shoulda 文档中获取的获取请求来测试显示操作:

      class UsersControllerTest < Test::Unit::TestCase
        context "on GET to :show" do
          setup { get :show, :id => 1 }
      
          should_assign_to :user
          should_respond_with :success
          should_render_template :show
          should_not_set_the_flash
      
          should "do something else really cool" do
            assert_equal 1, assigns(:user).id
          end
        end
      end
      

      不妨看看rails guides,也不错。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-07
        相关资源
        最近更新 更多