我正在使用Rails4和设计。在编写控制器规格时,我遇到了这样的代码:有人能解释一下这个RSpec存根是如何工作的吗?
user = double(@user)
request.env['warden'].stub :authenticate! => user
allow(controller).to receive(:current_user) { user }
... here。
它的工作原理。我写的控制器规范要求认证通过适当。
我读过一些关于存根工作原理的web条目,我想我明白了。似乎快速和足够我的需求。
即使上面的代码使用RSpec的double
方法,我仍然得到这个折旧警告:
从RSpec的,嘲笑的老
:should
语法使用stub
没有明确 使语法已过时。改为使用新的:expect
语法或 明确启用:should
。从 调用/Users/perry_mac/rails_projects/mymri/spec/controllers/steps_controller_spec.rb:14:in `block(2 levels)in'。
由于我使用“new:expect语法”,这使我感到困惑。所以我对这个其他工作的代码片断感到不知所措。例如,我现在还不清楚如何使用它来编写一个测试,该测试使用两个用户登录并确保每个用户都只能看到他们的适当范围的搜索结果。是否有更合适的方式来存根会话来检查使用身份验证的控制器?
而且......为什么上面的工作,但这样的事情不?:
before(:each) {
email = "[email protected]"
password= "password"
@user = FactoryGirl.create(:user, email: email, password: password)
session[:user_id] = @user.id
.
.
.