Rspec-rails: `format :: js`はRails4.1.0.rc1で失敗します

作成日 2014年03月09日  ·  6コメント  ·  ソース: rspec/rspec-rails

JSアクション( format: :js )のコントローラー仕様がRails 4.1.0.rc1で失敗し、次のエラーが発生します。

ActionController::InvalidCrossOriginRequest:
       Security warning: an embedded <script> tag on another site requested protected JavaScript. If you know what you're doing, go ahead and disable forgery protection on this action to permit cross-origin JavaScript embedding.

推測しているだけですが、これはRSpecに影響を与える新しいRails機能である可能性があり、アプリケーションが期待するのとは異なるドメインからこれらのリクエストを生成する可能性があります。

これを再現するには、 https://github.com/mezuro/mezuroをブランチrails4.1に複製し、 bundle install後に、 rspec spec/controllers/repositories_controller_spec.rbます。

このアプリケーションを観察すると、POSTリクエストが正常に機能している間、これはGETリクエストに影響を与えると言えます。

ブラウザでアプリケーションを実行しても、キュウリのテストだけでなく、エラーや警告も発生しません。 そして、Rails4.0.3でのテストはOKです。 また、これをrspec-rails 2.14.1および3.0.0.betaに対してテストしたところ、同じ結果が得られました。

どうもありがとう!

最も参考になるコメント

前回の更新で、次を使用できるようになりました。
(ruby) get :action, xhr: true, format: :js

全てのコメント6件

原因:rails / rails#13345

PRオフに基づいて、あなたがする必要があると思われるxhr :getするのではなくget 、または手動で検証トークンを渡します。 get関数は直接実装していません。これは、Railsテストヘルパーの一部であるため、推奨される方法( xhr :get )を使用する必要があります。

これはMiniTestでも失敗するため、終了します...

/ cc @myronmarston @alindeman

@JonRoweに感謝しxhr :getで期待どおりに機能しました。 ご不便おかけしてすみません。

心配はいりません。何が起こっているのかを理解するためにこれを調査する必要がありました。 :)

これは役に立ちます
http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#csrf -protection-from-remote-script-tags

前回の更新で、次を使用できるようになりました。
(ruby) get :action, xhr: true, format: :js

このページは役に立ちましたか?
0 / 5 - 0 評価