0
강력한 매개 변수가있는 사용자를 테스트하고 업데이트하려고합니다.Devise 및 TestCase (Rails 4.1)를 사용하여 업데이트 사용자 테스트
devise_parameter_sanitizer.for(:account_update) do |u|
u.permit(:email, :password, :password_confirmation, :current_password,
:time_zone)
end
등록 서 컨트롤러 업데이트 작업은 다음과 같습니다 :
def update
user_update_params = devise_parameter_sanitizer.sanitize(:account_update)
....
@user = User.find(current_user.id)
....
@user.update(user_update_params)
...
end
내 테스트에서 내가 전달하고 업데이트 속성 :
def update_attributes
{user: {email: '[email protected]',
time_zone: 'Melbourne'}}
end
test 'Update' do
patch(:update, update_attributes)
assert_equal '[email protected]', assigns(:user).email
assert_equal 'false', assigns(:user).use_weighted_rates
end
을
강한 PARAMS는 응용 프로그램 컨트롤러에서 설정 문제는 Devise :: ParameterSanitizer 객체입니다. @params는 u가 아닌 @user 속성을 반영합니다. pdate_attributes :
@params=
{"user"=>
{"email"=>"[email protected]",
"time_zone"=>"Sydney"}}
따라서 테스트 어설 션이 실패합니다.
내가 뭘 잘못하고 있니?
무엇이 오류입니까? –
시험은 통과되지 않습니다 assert_equal '[email protected]', 양수인 (: 사용자) Minitest :: 어설 .email을 : 예상 : "[email protected]" 실제 "[email protected] " {"email "=>"[email protected] ","time_zone "=>"Sydney "} –
이 줄을 변경하면 어떨까요 :"@ user.update user_update_params) "를"@ user.update! (user_update_params) "로 변경하십시오. 예외가 발생합니까? –