Rails:测试远程调用操作的最佳方法?

时间:2010-07-19 17:09:48

标签: javascript ruby-on-rails unit-testing

我再次尝试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

它会说“创建”操作缺少模板。

你们通常如何测试远程通话?

1 个答案:

答案 0 :(得分:1)

你能使用'xhr'函数而不是'post'函数吗?如果您搜索“xhr”,可以在http://weblogs.java.net/blog/2008/01/04/testing-rails-applications找到一个示例。但即便如此,我很好奇,即使有远程通话,你不需要返回SOMETHING吗?即使只是一个OK标题?