1

ユーザーのサインインに Devise を使用しています。すべてがスムーズに実行されるように、いくつかのテストを書きたいと思います。私のサインインは Poloymorphism Association を使用しています。

ユーザーは、正常に機能している雇用主または申請者である可能性があります。

次のコードと、Devise が提供する sign_in ヘルパーを使用しています。

 def log_in_applicant
    sign_in UserFactory.applicant 
 end

このコードはユーザーをサインインしません。しかし、Rails コンソール デバッガーに移動してコードを記述すると、ユーザーはサインインします。

4

1 に答える 1

0

Devise は TestCase で sign_in ヘルパーを使用することを許可していないため、上記のコードはユーザーをサインインさせません。

サインインの使用をモックするには、モックを使用する必要があります。

Mocha Gem を使用して、次のコードを記述できます。

 def log_in_applicant
    JobsController.any_instance.stubs(:current_user).returns( UserFactory.applicant)
 end
  • 明らかに、サインインするユーザーは UserFactory から取得されます。
  • any_instance.stubs(:current_user) - :current_user の任意のインスタンスを示し、devise からのヘルパーが返される必要があります
  • .returns( UserFactory.applicant)
  • JobsController は、テストするコントローラーへの参照です。実際には self.current_user への参照は意味があります。詳細情報が必要な場合は、私に尋ねてください:)
于 2013-04-12T08:24:51.097 に答える