QA@IT

Rails+RSpec+Capybaraでのテストでlink_toのAjaxがうまくテストできない

3977 PV

Railsアプリに、RSpec+Capybaraでテストを書いています。
JavaScriptのドライバはPoltergeistです。

内容

問題はCapybaraでのテスト中に起こります。
以下のように、link_toからAjaxでpostした際、なぜかhtmlとしてリクエストしてしまうのです。

View

link_to Button, xxx_path, method: :post, remote: true

Controller

class XxxController < ApplicationController
  def create
    # :

    render create # create.js.coffee を呼び出す
  end
end

RSpec+Capybara

it xxx, js: true do
  find(.xxx a').click
end

エラー内容

Failure/Error: find(‘.xxx a').click
ActionView::MissingTemplate:
  Missing template xxx/create with {:locale=>[:ja], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee, :haml]}.

:formats=>[:html]とあるので、.js.coffeeではなく.html.hamlを要求していることになっていると認識しています。

備考

上記は、投票機能のように、リンクを押したらAjaxで投票する、という機能の一部です。

普通にブラウザから確認した際は問題なくcreate.js.coffeeの結果が反映されます。
テストの際だけ上記エラーが出てしまいます。

なにかヒントでもいただければ幸いです。
よろしくお願いいたします。

  • ほかのjsテストは成功していますか? -
ウォッチ

この質問への回答やコメントをメールでお知らせします。