使用MiniTest测试用户模型(设计认证)

我正在尝试测试用户模型,为此我设计了身份validation。

我面临的问题是,1。在fixtures中输入’password’/’password_confirmation’字段会给我无效的列’password’/’password_confirmation’错误。

  1. 如果我从fixture中删除这些列并添加user_test.rb

    require 'test_helper' class UserTest < ActiveSupport::TestCase def setup @user = User.new(name: "example user", email: "example@example.com", password: "Test123", work_number: '1234567890', cell_number: '1234567890') end test "should be valid" do assert @user.valid? end test "name should be present" do @user.name = "Example Name " assert @user.valid? end end 

我得到的错误是:

  test_0001_should be valid FAIL (0.74s) Minitest::Assertion: Failed assertion, no message given. test/models/user_test.rb:49:in `block in ' test_0002_name should be present FAIL (0.01s) Minitest::Assertion: Failed assertion, no message given. test/models/user_test.rb:54:in `block in ' Fabulous run in 0.75901s 2 tests, 2 assertions, 2 failures, 0 errors, 0 skips 

我想知道为什么我的用户对象无效?

谢谢

经过一些调查后,我得到了一个解决方法,如下所示:为灯具添加辅助方法:

 module FixtureFileHelpers def encrypted_password(password = 'password123') User.new.send(:password_digest, password) end end ActiveRecord::FixtureSet.context_class.send :include, FixtureFileHelpers 

并制作这样的夹具:

 default: email: 'default@example.com' name: "User name" encrypted_password: <%= encrypted_password %> work_number: '(911) 235-9871' cell_number: '(911) 235-9871' 

并在用户测试中将此fixture用作用户对象。

 def setup @user = users(:default) end