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