4

テストに取り組んでいますが、current_user を必要とするページで障害が発生しています。ruby 1.9.3p327 の rails 3.2.9 で、minitest、capybara、factorygirl、および authlogic を使用しています。minitest を個別の gem としてインストールしましたが、テスト環境は正しく動作しているようです。

有効なユーザーを作成するファクトリがあります...次のようなテストでそのファクトリを呼び出します。

  describe "UsersAcceptanceTest" do
    it "must load and include content" do
      FactoryGirl.create(:user)
      visit users_path
      page.must_have_content("cPanel")
    end
  end

コンテンツ「cPanel」が見つからなかったことを知らせる FAIL は正しいです (cPanel はログインしているユーザーが利用できるリンクです)。失敗エラーは、「ログイン、パスワードを忘れた、連絡先」で見つからなかったことを警告します...もちろん、テストはusers_pathに正しくルーティングされましたが、ユーザーがログインしていないため、authlogicによってリダイレクトされたことを意味しますユーザーは自分のシステムで自分自身を作成できないため、作成時に自動ログインされません。

ファクトリに、新しく作成されたユーザーとの新しいユーザー セッションを作成させるにはどうすればよいですか?

4

1 に答える 1

4

次の方法で実行できます。

  visit signin_path
  fill_in 'email',      with: user.email
  fill_in 'password',   with: user.password
  click_button "Log in"

ログインページの構造に従って編集するだけです。

minitest についてはわかりませんが、rspec では、このコードを使用して別のメソッドを作成しdef sign_in...endsupport\utilities.rb.

次に、コードは次のようになります。

  describe "UsersAcceptanceTest" do
    let(:user) { Factory(:user) }
    subject { page }

    it "must load and include content" do
      sign_in user 
      visit users_path
      it { should have_link("cPanel",   href: cpanel_path) }
    end
  end

ご覧のとおり、コードをもう少し編集しました。

于 2012-12-23T03:39:40.110 に答える