4
邁克爾·哈特爾的軌道教程6.20顯示了下面的代碼上市交易:Rails的教程Rspec的誤解
before do
@user = User.new(name: "Example User", email: "[email protected]")
end
.
.
.
describe "when email address is already taken" do
before do
user_with_same_email = @user.dup
user_with_same_email.email = @user.email.upcase
user_with_same_email.save
end
it { should_not be_valid }
end
我無法把握這個概念,因爲@ user.dup返回完全相同的對象,這是一個代表複製到user_with_same電子郵件中,但@user從未保存到文件中任何位置的數據庫中。因此,user_with_same_email.save測試應該每次都有效。但是,測試通過。有人請解釋這一點...是否有一個隱含的數據庫保存在@user = User.new(...)?我知道如果它是User.create(...)會有一個保存,但不是新的方法。謝謝!
感謝您清除那個......我沒有考慮它,但代碼是@ user.should_not be_valid。是否有文檔告訴我該規範試圖保存@ ..用戶,當我做一個should_not調用?我想閱讀,以更好地瞭解 –
^我實際上是在做更多的閱讀,我看到有效的?方法,由be_valid中的塊使用,測試@user是否在模型文件中傳遞了rails的驗證。因爲我在那裏有唯一性驗證,所以模型將檢查數據庫的唯一性。 所以沒有@ .. user.save,我現在明白了,再次感謝! –