20

コントローラーがjavascriptでのみ応答する場合、Rspecでコントローラーをどのようにテストしますか? たとえば、これは私の実際のコードです:

いくつかのview.html.erb

link_to 'More Chips', add_chips_path, :remote => true

チップコントローラー

def add_chips
  Chips.create(:color => :red)
  @chips = Chips.all
end

add_chips.js.erb

$('#chip_count').html('<%=j render("chips/list", :chips => @chips) %>');

Rspec テスト

仕様/コントローラー/chips_controller_spec

it "should add chips" do 
  post :add_chips, :format => 'js'
end

RSpec を使用してこれに投稿しようとすると、HTML 要求を送信しているのに HTML ビューがないため、テンプレートが見つからないというエラーが発生します。フォーマットを渡そうとしましたが、うまくいかないようです。「ダミー」のhtmlビューを入れて通過させることができることは知っていますが、それはハックのようです。

ありがとう

4

2 に答える 2

19

わかりました、私は自分が間違っていたことを理解しました。テストでパラメーター ハッシュを渡していましたが、同じハッシュに形式を含める必要があります。これの代わりに:

@params = {:chip_color => 'red'}
...
post :add_chips, @params, :format => 'js'

このように見える必要があります

@params = {:chip_color => 'red', :format => 'js'}
...
post :add_chips, @params
于 2012-09-28T01:57:25.027 に答える