Я пытаюсь реализовать некоторые интеграционные тесты для моего приложения, чтобы протестировать систему голосования, которая у меня есть, но столкнулась с некоторыми проблемами. Прежде всего, вот тестовый код, который я пытаюсь пройти:
describe "vote_up_user" do
it "should update the user rating" do
click_link "user_up_arrow"
response.should have_selector("#user_rating", :content => "1")
end
end
Вот ссылка, по которой нажимают:
<%= link_to image_tag("uparrowbig.png"), vote_up_user_path(@user), :method => :post,
:id => "user_up_arrow", :class => "arrow", :remote => true %>
Соответствующее действие:
respond_to :html, :js
def vote_up_user
@voted_on_user = User.find(params[:id])
current_user.vote_exclusively_for(@voted_on_user)
respond_with(@voted_on_user, :location => user_path(@voted_on_user))
end
и, если кому-то интересно, соответствующие голоса / voice_up_user.js.erb:
$("user_rating").update('<%= @voted_on_user.plusminus.to_s %>')
$("user_up_arrow").update('<%= image_tag("uparrowbigselect.png") %>')
$("user_down_arrow").update('<%= image_tag("downarrowbig.png") %>')
Моя проблема в том, что я продолжаю приводить к сбою в строке click_link со следующей ошибкой:
Missing template votes/vote_up_user with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>[:html], :locale=>[:en, :en]}
Я могу понять, почему это не удается, поскольку у меня нет шаблона html.erb по указанному пути. Вместо этого у меня есть файл js.erb, так как это AJAX-вызов, но он не включен в массив: format и, следовательно, не найден. Мой вопрос заключается в том, какой наилучший способ обеспечить поиск в формате: js, когда интеграционный тест нажимает на ссылку? Это то, что я могу просто настроить в тесте, или мне нужно будет добавить его в помощник по ссылкам?