【发布时间】:2014-09-26 19:13:19
【问题描述】:
我正在使用 Rails4 并进行设计。在编写控制器规范时,我遇到了以下代码:
user = double(@user)
request.env['warden'].stub :authenticate! => user
allow(controller).to receive(:current_user) { user }
...here。
它有效。我编写的控制器规范要求适当地通过身份验证。
我已经阅读了一些关于存根如何工作的网络条目,我想我明白了。似乎快速且足以满足我的需求。
即使上面的代码使用了 RSpec double 方法,我仍然得到这个折旧警告:
使用来自 rspec-mocks 的旧
:should语法的stub没有显式 启用语法已弃用。使用新的:expect语法或 改为显式启用:should。调用自 /Users/perry_mac/rails_projects/mymri/spec/controllers/steps_controller_spec.rb:14:in '块(2级)'。
这让我很困惑,因为我使用的是“新的 :expect 语法”。所以我对这个原本可以工作的代码 sn-p 感到模糊的不安。例如,目前尚不清楚如何使用它来编写一个测试,该测试利用两个用户登录并确保每个用户只能看到其适当范围的搜索结果。是否有更合适的方法来存根会话以检查使用身份验证的控制器?
而且...为什么上面的工作有效,但这样的事情却没有?:
before(:each) {
email = "user@example.com"
password= "password"
@user = FactoryGirl.create(:user, email: email, password: password)
session[:user_id] = @user.id
.
.
.
【问题讨论】:
标签: ruby-on-rails ruby rspec devise