- レール(5.1.4)
- RSpecのレール(3.7.2)
- カピバラ(2.16.1)
- 工夫(4.3.0)
https://relishapp.com/rspec/rspec-rails/v/3-7/docs/system-specs/system-specのようにRSpec Rails 3.7システム仕様を作成してください。RSpec + Capybara + Devise:current_user?私がしようとしている
また、私はDevise認証を適用したいと思います。私は指示に従ったhttps://github.com/plataformatec/devise/wiki/How-To:-Test-with-Capybara
しかし、私はそれが欠陥のある実装のようだと思います。私はメソッド(nil
)を取得しません。
ここに私の簡単な仕様:
require 'rails_helper'
RSpec.describe "testing system", type: :system do
it "tests the spec" do
admin = create(:admin) # user-admin
login_as(admin, :scope => :admin)
visit root_path
click_link 'Home'
save_and_open_page
end
end
自分のサイト上のコードがcurrent_user
値に大きく依存しているので、私は適切に形成されて保存されたページを取得しない(ユーザーがログインしていないように見えます) 。
どうすればよいですか?私は単に手動で(何とか?)値をcurrent_user
に割り当てることを試みるべきですか?あるいは、https://github.com/plataformatec/devise/wiki/How-To:-Test-with-Capybaraの戦略は主に欠陥であり、何かより本格的な技術に置き換えるべきでしょうか?
私はすでに私のコードで
current_user = admin
を作ってみました - しかし、誰結果に。
はい、問題は 'login_as(admin、:scope =>:user)'と 'login_as(admin)'でも問題ありませんでした。 Deviseのドキュメントだけでは不十分です。もちろん、私は仕様の中で 'current_user'にアクセスする必要はありません - テストされているコード内でのみ動作する必要があります。ありがとう。 – prograils