使用Rails 4.1.8和RSpec 3.2.1RSpec的測試預期(user.save)未能上。爲了be_true
該測試通過在我的RSpec的寶石2.0其他應用程序。
它也適用於開發模式。如果我使用全部大寫的電子郵件創建用戶,它將以小寫形式保存在數據庫中。
這是我的失敗消息:
Failures:
1) User validations #downcase_email downcases an email before saving
Failure/Error: expect(user.save).to be_true
expected false to respond to `true?`
# ./spec/models/user_spec.rb:52:in `block (4 levels) in <top(required)>'
測試:
require 'rails_helper'
describe User do
let(:valid_attributes) {
{
user_name: "username",
email: "[email protected]",
password: "password",
password_confirmation: "password"
}
}
describe "#downcase_email" do
it "downcases an email before saving" do
user = User.new(valid_attributes)
user.email = "[email protected]"
expect(user.save).to be_true
expect(user.email).to eq("[email protected]")
end
end
end
我的用戶模型:
class User < ActiveRecord::Base
has_secure_password
validates :user_name, presence: true,
uniqueness: true
validates :email, presence: true,
uniqueness: true,
format: {
with: /\A[A-Za-z0-9._%+-][email protected][A-Za-z0-9\.-]+\.[A-Za-z]+\Z/
}
before_save :downcase_email
def downcase_email
self.email = email.downcase
end
end
感謝您的幫助,您可以提供。
如果我消除了user_name上的唯一性驗證,則我的測試通過。也許是有兩個獨特的驗證問題?一切工作正常在開發中。 –
當你檢查user.errors.full_messages時會發生什麼? – stytown
如果我創建一個新用戶,'user.errors.full_messages'產生一個空數組。 '=> []'。 –