テストには Rspec、FactoryGirl、および Spork を使用しています。少し不明な点が 2 つあります。最初は、factory.rb ファイルの場所です。現在、私はそれを
spec/support/factories.rb
そして、それはこのように見えます
FactoryGirl.define do
factory :user do
email "example@yahoo.com"
password "password"
password_confirmation "password"
confirmed_at Time.now
end
end
私のspec_helper内に私が持っている
config.include FactoryGirl::Syntax::Methods
次に、コントローラーのテストを開始する前にユーザーにログインしたいのですが、この特定のコントローラーにはフィルターの前に :authenticate_user! があります。
認証にdeviseを使用しているため、追加しました
config.include Devise::TestHelpers, :type => :controller
デバイスのドキュメントを読んで、controller_macros.rb を追加し、使用するメソッドを指定することができます
def login_user
before(:each) do
@request.env["devise.mapping"] = Devise.mappings[:user]
user = FactoryGirl.create(:user)
user.confirm! # or set a confirmed_at inside the factory. Only necessary if you are using the confirmable module
sign_in user
end
end
そして、これも私のspec_helperに追加しました
config.include ControllerMacros, :type => :controller
そのため、コントローラーのテストの前に login_user を追加すると、未定義のメソッド login_user が取得されます。ここで同じことをするために 2 つのツールを使用していますか? 私は実際にdeviseメソッドが必要ですか、それともfactoryGirlですべて行うことができますか. その場合、コントローラをテストする前にログイン プロセスをセットアップするにはどうすればよいですか?