我正在使用带有shoulda的Test :: Unit来测试控制器。
因为我只是在测试控制器,所以我不想要渲染视图。
我正在对某些对象进行存根,在渲染视图时会抛出一些错误,但测试不应该失败,因为控制器是正确的。
那么,有什么方法可以禁止从我的测试中渲染模板/视图?
我听说rSpec就是这样的。
答案 0 :(得分:6)
如果您使用的是Mocha,那很简单。将其添加到您的个人测试或设置方法中:
@controller.expects(:render)
如果你不是,那么,使用摩卡。
gem install mocha
然后在你的test_helper.rb
中require 'mocha'
答案 1 :(得分:-1)
您不应该在测试中看到任何视图。你能发布失败的测试代码吗?控制器(功能)测试应该只检查调用操作时发生的特定操作。即它应检查它是否呈现正确的视图或重定向到不同的操作。您还可以检查视图的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
也许看看rails guides这也很不错。