Ruby On Rails使用RSpec测试用户模型 - 密码和password_confirmation无法正常工作

时间:2018-02-27 19:42:49

标签: ruby-on-rails ruby testing rspec tdd

这是我的第一篇文章。我开始学习Ruby和Ruby On Rails框架。

我想用RSpec测试用户模型,我对密码 password_confirmation 的通过验证有问题。

代码:https://github.com/paw3lgora/gCMS/blob/master/spec/models/user_spec.rb

我遇到问题:它{should validate_confirmation_of(:密码)}

我不想使用BCrypt的devise gem或has_secure_password方法,因为我学习了Ruby,我想从头开始实现我的认证系统,并在将来添加Argon2。

这给我一个错误:

  

1)用户验证密码应该验证   :password_confirmation匹配:密码        失败/错误:它{should validate_confirmation_of(:password)}

   User did not properly validate that :password_confirmation matches
   :password.
     After setting :password_confirmation to ‹"some value"›, then setting
     :password to ‹"different value"›, the matcher expected the User to be
     invalid and to produce the validation error "doesn't match Password"
     on :password_confirmation. The record was indeed invalid, but it
     produced these validation errors instead:

     * name: ["Nazwa użytkownika nie może być pusta.", "Nazwa użytkownika
       jest za krótka. Minimum 2 znaki."]
     * email: ["Nie podałeś emaila.", "Email jest za krótki. Minimum 5
       znaków.", "Podałeś złą nazwę użytkownika."]
     * password_confirmation: ["Hasła nie pasują do siebie."]
 # ./spec/models/user_spec.rb:27:in `block (4 levels) in <top (required)>'

帮帮我们! :)

1 个答案:

答案 0 :(得分:0)

如果您仔细阅读整条信息,请看

  

记录确实无效,但它        产生了这些验证错误:

这意味着验证失败,但匹配器期望验证错误完全符合指定。还有更多。

您有两种选择:

  • 在规范中添加所有失败的验证期望
  • :name:email有效的方式准备用户对象。