Rspec + Devise::TestHelpers 类型的解释

Explanation on Rspec + Devise::TestHelpers type

我正在使用 rspec-rails to test my application and devise 作为身份验证解决方案。

像我们很多人一样,我遇到了常见错误:undefined method authenticate' for nil:NilClass which I resolved partially by adding this line as suggested in the README :

config.include Devise::TestHelpers, type: :controller

对于控制器的测试,错误消失了,但对于我的视图的测试,它仍然存在。我终于通过添加完全解决了它:

config.include Devise::TestHelpers, type: :view

但我不确定这样做是否正确,因为我以前从未在任何地方见过它。

另外,我们可以为每个类型都包含它吗,比如 config.include Devise::TestHelpers, type: :all

感谢您的澄清

您可以通过不指定 type.

在所有示例中包含一个模块
config.include Devise::TestHelpers

如果您的视图正在使用 Devise 的助手,例如 current_useruser_signed_in?,那么在它们的规范中包含 TestHelpers 是合理的。尽管在架构上,您可能需要考虑在控制器中分配 @user = current_user 之类的东西,这样您就可以将视图与身份验证分离。