ここには、Article
とCategory
モデルがあります。明らかに記事は1つのカテゴリに属しています。AJAX Rails 3アプリケーションのテストコントローラにはどのようにアプローチすればよいですか?
新しい記事のフォームに新しいカテゴリを作成するオプションが必要なので、AJAXを使用することにしました。フォームはとてもシンプルに見えます。私は、例えば、うまく動作するように思われる、as described in Ryan Bates' screencast、要求スペックを経由して統合テストを使ってきたCategoriesController
class CategoriesController < ApplicationController
respond_to :js
def create
@category = Category.new(params[:category])
@saved = @category.save
end
end
とcreate.js.coffee
ビューテンプレート
if <%= @saved %>
$('#category_name').val ''
new_option = $("<option value='<%= @category.id %>'><%= @category.name %></option>").attr('selected', 'selected')
$('select#article_category_id').append(new_option).focus()
else
alert "Category already exists"
$('#category_name').val('').focus()
と同じ
<%= form_for @category, :method => :post, :remote => true do |f| %>
<p>
<%= f.label :name %>
<%= f.text_field :name %>
</p>
<p class="button"><%= f.submit %></p>
<% end %>
it "supports js", :js => true do
visit new_article_path
fill_in "category_name", :with => "foobar"
click_button "Add category"
page.should have_content("foobar")
end
事があり、コントローラは.js.coffe
テンプレートを使用して応答しているので、私は本当にビューのスペックを持つことはできません。 リクエスト仕様があるときにコントローラをテストするのに気を付けるべきでしょうか?
質問の第2部分です。 コントローラーからの応答として.js.coffee
テンプレートを使用することをお勧めしますか?私はちょうどhttpステータスコードまたはJSONを返すべきではなく、すべての応答を実行するJavaScriptを生成するのではなく、クライアント側のすべてを処理するべきではありませんか?