Rails、Rspec、Devise:查看经过身份验证的块内包含路由的规范

问题描述 投票:0回答:1
  • 导轨7
  • 设计
  • 康康康

您如何处理这一点?

在应用程序中,我想将所有路线放入

authenticated
块内,例如:

devise_scope :user do

  unauthenticated do
    root 'sessions#new'
  end

  authenticated do
    ... routes here
  end

end

共振:

  • 这就像第二把保护伞,可以保护路由免受未经身份验证的访问。
  • 对于
    not logged in
    案例,我不必为每条路线编写额外的测试。

在控制器/请求规格上,一切正常。因为你在测试开始时

log_in
(设计助手)。

问题

在视图规格上,这会为每个

No route matches
抛出
link_to
,因为在视图规格上,您无法使用 Devise
log_in
帮助器。你必须嘲笑
authenticated
块。

从我的角度来看,我想使用

authenticated
块,但似乎这在实践中是不可能的。

您如何解决这一点?

如何模拟经过验证的区块?

ruby-on-rails rspec devise cancancan
1个回答
0
投票

找到我的答案

Devise

authenticated
块在实践中没有用,因为:

当未经身份验证的用户想要访问应用程序的特定页面时,您通常希望缓存请求url,将其重定向到登录页面,并在登录成功后将其重定向到原始url。

但是如果未经身份验证的路由不存在,则这是不可能的。

© www.soinside.com 2019 - 2024. All rights reserved.