2

RSpecをアップグレードしていますが、特に2つの要素で問題が発生しています。私はこのチュートリアルに従っていますが、具体的には、メソッドに問題があります

def sign_in(user)
  visit root_path
  fill_in "Email", with: user.email
  fill_in "Password", with: user.password
  click_button "Sign in"
  # Sign in when not using Capybara as well.
  cookies[:remember_token] = user.remember_token
end

エラーが発生する場所

undefined local variable or method `cookies' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_3::Nested_3::Nested_1:0x79b9c90>

さらに、別のエラーがあります

before {put user_path(user)}

与える

undefined method `put' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_3::Nested_1::Nested_2::Nested_3:0x7939830>

最初のエラーとして、RSpecドキュメントの手順を実行しようとしましたが、CapybaraページからRSpec応答オブジェクトを取得する方法(を呼び出した結果click_button)を理解できないようです。2番目のエラーについては、私は本当に途方に暮れています。RSpecがput関数を削除したようですが、元に戻す方法がわかりません。

4

1 に答える 1

2

これはRSpecの問題ではなく、Request/IntegrationとFunctional/Controllerの仕様の問題です。

Capybara、より具体的には「request」または「integration」仕様は、put()やget()などのリクエストメソッドへのアクセスを提供しません。これらは、仕様/コントローラー/を実行するコントローラー仕様にのみ存在します。コントローラを直接テストするときに使用できるcookies[]ハッシュおよびその他の変数についても同じです。

回避策については、この要点を参照してください。

于 2013-01-31T03:30:50.200 に答える