it "should have edit button if user has permission to edit" do
EntitiesHelper.stubs(:permission_to_edit_entity?).returns(true)
get :index
@entities[0..3].each do |entity|
response.should have_selector("form",
:method => "get",
:action => "/entities/edit/#{entity[:id]}") do |form|
form.should have_selector("input", :value => "Edit")
end
end
end
我正在尝试编写一个简单的测试用例,测试用户是否具有编辑权限时会显示编辑按钮。我正在尝试使用存根。但是,它似乎不起作用。输出视图不显示每个实体旁边的编辑按钮,如果存根工作,我会期望。我是摩卡和捣蛋的新手 - 我在这里做错了什么?
谢谢!
答案 0 :(得分:0)
我认为EntitiesHelper
是一个普通的rails帮助程序,它被混合到控制器中 - 因此所有它的实例方法(例如permission_to_edit_entity?
)都可供控制器使用,并且视图可以访问这些帮助程序方法(通过控制器)...所以您可以在控制器上存根方法:
controller.stubs(:permission_to_edit_entity?).returns(true)
在这种特殊情况下,我甚至会考虑将存根更改为模拟,因为您希望调用该方法(尽管您正在测试按钮存在,但最好知道流程没有按预期发生):
controller.expects(:permission_to_edit_entity?).returns(true)
但这当然是有争议的,无论如何你应该没事......