ruby-on-rails Ruby on Rails:更详细的测试

li9yvcax  于 2023-05-02  发布在  Ruby
关注(0)|答案(2)|浏览(138)

这个测试一直失败,我不知道为什么:

test "correctly formatted profile_name2" do
    user = User.new(first_name: 'Jim', last_name: 'Johnson', email: 'jim@teamtreehouse.com', password: 'awfawwf', profile_name: "jimmy")
    puts user.errors.inspect
    assert user.valid?
  end

我试图通过puts user.errors.inspect语句找出问题所在,但我得到的是一个数组(我认为),它只是列出了数据库输入,而不是准确地列出了失败的原因。
澄清:

<ActiveModel::Errors:0x00000103c8ad30 @base=#<User id: nil, first_name: "Jim", last_name: "Johnson", profile_name: "jimmy", email: "jim@teamtreehouse.com", encrypted_password: "$2a$04$LTOb5O.gG0DEITsb/HDOb.fPLP83LaXzKlEerwCDE1og...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, confirmation_token: nil, confirmed_at: nil, confirmation_sent_at: nil, unconfirmed_email: nil, failed_attempts: 0, unlock_token: nil, locked_at: nil, authentication_token: nil, created_at: nil, updated_at: nil>, @messages={}>

在未来的测试中,测试中使用哪些语句来显式地打印屏幕上的错误?

dy1byipe

dy1byipe1#

与在测试中输出更详细的信息不同,设置TESTOPTS参数以在运行测试时获得详细输出也可能有所帮助。
例如,你可以这样设置它:

rake test TESTOPTS="-v"
nzkunb0c

nzkunb0c2#

作为一个Ruby on Rails的新手,我可以确认这个被接受的答案对Rails 7仍然有效。然而,我想提供一种实现相同结果的替代方法。
不使用rake test TESTOPTS="-v"命令,可以使用rails test命令提供的简写选项-v,如下所示:

rails test -v

此命令将生成与上一个命令相同的详细输出。
希望这能帮上忙。

相关问题