спотыкаясь помощники с помощью мокко - PullRequest
4 голосов
/ 20 мая 2011
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

Я пытаюсь написать простой контрольный пример, который проверяет, отображается ли кнопка редактирования, если у пользователя есть разрешение на редактирование.Я пытаюсь использовать заглушки для этого.Тем не менее, это не похоже на работу.Выходной вид не показывает кнопку редактирования рядом с каждой отдельной сущностью, которую я ожидал бы, если заглушка работает.Я новичок в мокко и окурках - я здесь что-то не так делаю?

Спасибо!

1 Ответ

0 голосов
/ 27 июля 2011

Полагаю, EntitiesHelper - это обычный старый помощник rails, который смешивается с контроллером - таким образом, все его методы экземпляра (такие как permission_to_edit_entity?) доступны для контроллера, и представления имеют доступ к этим вспомогательным методам (черезконтроллер) ... так что вы можете заглушить метод на контроллере:

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

в этом конкретном случае я бы даже подумал о замене заглушки на mock, так как вы ожидаете, что метод будет вызван (хотя вытестирование на наличие кнопки, это хорошо, чтобы знать, что поток не произошло, как ожидалось):

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

, но это, конечно, спорно и Вы должны быть хорошо так или иначе ...

...