使用设计问题存根 current_user
Issue stubbing current_user with devise
我正在制作一个 rails 4 应用程序,使用 devise 来处理我的用户身份验证,这在任何其他控制器或其测试中都没有给我带来任何麻烦。但是,当我在评论测试中使用 current_user 存根时(这是一个多态关联),我不断得到:
Failure/Error: allow(comment).to receive(:current_user).with(:user)
#<Comment id: nil, author_id: nil, content: "This is a Comment", commentable_type: "Question", commentable_id: 1, created_at: nil, updated_at: nil> does not implement: current_user
我已经用谷歌搜索了,但没有找到任何有用的东西,我使用了设计建议的 ControllerHelper 方法来控制测试登录,但没有帮助。我无法弄清楚这个错误的根源,所以即使是这么多也会非常有帮助。
这是给我带来麻烦的rspec:
session[:user_id] = user.id
allow(comment).to receive(:current_user).with(:user)
这是评论模型代码:
class Comment < ActiveRecord::Base
validates :content, presence: true
validates :author, presence: true
belongs_to :author, class_name: "User"
belongs_to :commentable, polymorphic: true
end
current_user
是 Devise 中的控制器或辅助方法(查看 this 代码),但您试图在模型中模拟它。它没有 current_user
方法,因此 rspec
引发异常。
我正在制作一个 rails 4 应用程序,使用 devise 来处理我的用户身份验证,这在任何其他控制器或其测试中都没有给我带来任何麻烦。但是,当我在评论测试中使用 current_user 存根时(这是一个多态关联),我不断得到:
Failure/Error: allow(comment).to receive(:current_user).with(:user)
#<Comment id: nil, author_id: nil, content: "This is a Comment", commentable_type: "Question", commentable_id: 1, created_at: nil, updated_at: nil> does not implement: current_user
我已经用谷歌搜索了,但没有找到任何有用的东西,我使用了设计建议的 ControllerHelper 方法来控制测试登录,但没有帮助。我无法弄清楚这个错误的根源,所以即使是这么多也会非常有帮助。
这是给我带来麻烦的rspec:
session[:user_id] = user.id
allow(comment).to receive(:current_user).with(:user)
这是评论模型代码:
class Comment < ActiveRecord::Base
validates :content, presence: true
validates :author, presence: true
belongs_to :author, class_name: "User"
belongs_to :commentable, polymorphic: true
end
current_user
是 Devise 中的控制器或辅助方法(查看 this 代码),但您试图在模型中模拟它。它没有 current_user
方法,因此 rspec
引发异常。