2

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

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

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

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

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

4

2 回答 2

6

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

@controller.expects(:render)

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

gem install mocha

然后在你的 test_helper.rb

require 'mocha'
于 2009-05-21T14:46:46.153 回答
-1

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

这是一个使用从 shoulda 文档获取的 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

也许看看rails guides,它也很不错。

于 2009-05-18T16:24:18.963 回答