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に対してテストしたところ、同じ結果が得られました。
どうもありがとう!
原因: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
最も参考になるコメント
前回の更新で、次を使用できるようになりました。
(ruby) get :action, xhr: true, format: :js