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

ユーザーに編集権限がある場合に編集ボタンが表示されることをテストする簡単なテストケースを作成しようとしています。これにはスタブを使用しようとしています。しかし、うまくいかないようです。出力ビューでは、スタブが機能する場合に期待されるすべてのエンティティの横に編集ボタンが表示されません。私はモカとスタブが初めてです - 私はここで何か間違ったことをしていますか?

ありがとう!

4

1 に答える 1

0

は、コントローラーに混在する単純な古いレールヘルパーであると想定EntitiesHelperしています-したがって、そのすべてのインスタンスメソッド( など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 に答える