Я снова пробовал Rails, на этот раз версию 3, но застрял при написании тестов для действия, которое я вызываю только удаленно.
Конкретный пример:
Контроллер
class PeopleController < ApplicationController
def index
@person = Person.new
end
def create
@person = Person.new(params[:person])
@person.save
end
end
Просмотр (index.html.erb)
<div id="subscription">
<%= form_for(@person, :url => { :action => "create" }, :remote => true) do |f| %>
<%= f.text_field :email %>
<%= f.submit "Subscribe" %>
<% end %>
</div>
Просмотр (create.js.erb)
<% if @person.errors.full_messages.empty? %>
$("#subscription").prepend('<p class="notice confirmation">Thanks for your subscription =)</p>');
<% else %>
$("#subscription").prepend('<p class="notice error"><%= @person.errors.full_messages.last %></p>');
<% end %>
Как я могу проверить эту удаленную отправку формы? Я просто хотел бы узнать, правильно ли представлены уведомления. Но если я попытаюсь сделать просто
test "create adds a new person" do
assert_difference 'Person.count' do
post :create, :people => {:email => 'test@test.com'}
end
assert_response :success
end
Будет сказано, что в действии "создать" отсутствует шаблон.
Как вы, ребята, обычно тестируете удаленные вызовы?