4
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

我正在尝试编写一个简单的测试用例,测试如果用户有权编辑,则显示编辑按钮。我正在尝试为此使用存根。但是,它似乎不起作用。如果存根有效,输出视图不会在每个实体旁边显示编辑按钮。我是 mocha 和 stubbing 的新手 - 我在这里做错了什么?

谢谢!

4

1 回答 1

0

我假设EntitiesHelper是一个普通的rails helper,它被混合到控制器中 - 因此它的所有实例方法(例如permission_to_edit_entity?)都可供控制器使用,并且视图可以访问这些帮助器方法(通过控制器)......所以你可能会存根控制器上的方法:

controller.stubs(:permission_to_edit_entity?).returns(true)

在这种特殊情况下,我什至会考虑将存根更改为模拟,因为您希望调用该方法(尽管您正在测试按钮的存在,但很高兴知道流程没有按预期发生):

controller.expects(:permission_to_edit_entity?).returns(true)

但这当然是有争议的,无论哪种方式你都应该没问题......

于 2011-07-27T10:51:58.620 回答