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

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

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

那么,有什么方法可以禁止从我的测试中渲染模板/视图?

我听说rSpec就是这样的。

有帮助吗?

解决方案

如果您使用的是Mocha,那很简单。将其添加到您的个人测试或设置方法中:

@controller.expects(:render)

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

gem install mocha

然后在你的test_helper.rb

require 'mocha'

其他提示

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

以下是使用从shoulda docs获取的get请求测试show动作的一个很好的示例:

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

或许可以查看导轨指南这也很不错。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top