我正在使用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
.
.
.