2
我是新來的設計,因爲我採取了現有的應用程序。 它使用設計進行身份驗證(不可確認)。 我想在users_controller中使用update_with_password方法編寫更新方法的測試。如何爲包含Devise update_with_password方法的方法編寫通過測試?
我無法弄清楚我在這裏做錯了什麼。要麼我沒有將正確的參數傳遞給請求(雖然我在之後檢查了開發和模型測試(除了表單的authenticity_token)),或者其他問題出錯了。
我使用測試::單位和夾具:
在users_controller:
def update
@user = current_account.users.find(params[:id])
raise @user.valid_password?(params[:user][:current_password]).inspect
if @user.update_with_password(params[:user])
sign_in(@user, :bypass => true)
flash[:notice] = flash_saved
redirect_to edit_user_path(@user)
else
flash[:alert] = flash_not_saved
render 'edit'
end
end
在users_controller_test:
test "should update user with password" do
@user = users(:participant)
sign_in(@user)
assert_equal(true, @user.valid_password?('<password>'))
put :update, {id: @user.id, method: :put, :user => {email: @user.email, password: nil, password_confirmation: nil, current_password: "<password>", firstname: "louis"}, subaccount: "test"}
end
在夾具:
participant:
email: [email protected]
id: 3
confirmed_at: 2013-01-01 00:10:00
account_id: 1
firstname: participant
last_sign_in_at: <%= Time.now - 30 %>
encrypted_password: <encrypted_password>
password_salt: <password_salt>
的一個雖然我在開發中複製了用戶的encrypted_password和password_salt,但是在測試中的ssertion返回false。
在發展中的請求參數:
{"utf8"=>"✓",
"_method"=>"put",
"authenticity_token"=>"hy3IJ8C7qQs+iyxZ/VCnrVWEh9vecZCGrAuxwEWxWEE=",
"user"=>{"email"=>"[email protected]",
"firstname"=>"",
"lastname"=>"",
"gender"=>"",
"phone1"=>"",
"current_password"=>"[FILTERED]",
"password"=>"[FILTERED]",
"password_confirmation"=>"[FILTERED]"},
"commit"=>"Opslaan",
"subaccount"=>"experience",
"id"=>"3087"}
請求paramers測試:
{"subdomain"=>nil, "method"=>"put", "user"=>{"email"=>"[email protected]", "firstname"=>"louis"}, "id"=>"3", "subaccount"=>"test", "controller"=>"users", "action"=>"update"}
不知怎的,它沒有顯示:current_password,雖然我在請求發送。
我該如何讓這個測試通過?非常感謝您的幫助...