Devise现在允许我使用TestCase sign_in

时间:2013-04-12 08:24:51

标签: ruby-on-rails devise mocking mocha testcase

我正在使用Devise登录用户。我想写一些测试来确保一切运行顺利。我的签到是使用Poloymorphism Association。

用户可以是雇主或申请人,工作正常。

我正在使用以下代码和Devise给出的sign_in帮助器。

 def log_in_applicant
    sign_in UserFactory.applicant 
 end

此代码不签署用户。但是当我进入Rails控制台调试器并编写代码时,用户就会登录!

1 个答案:

答案 0 :(得分: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的任何实例,来自设计的帮助应该返回
  • .returns(UserFactory.applicant)
  • JobsController是对要测试的控制器的引用。它实际上是对self.current_user的引用。如果你想了解更多信息,请问我:)。