3
試圖找出爲什麼我的rspec測試失敗。最值得注意的是似乎矛盾的失敗信息。說明我有一個ActiveRecord :: RecordInvalid錯誤,這正是我聲稱應該發生的事情。Rails Rspec模型規範用戶:email ActiveRecord :: RecordInvalid
這裏是我的user.rb
...
validates_presence_of :email
...
這裏是我的users_spec.rb
...
it "is invalid without email" do
Factory(:user, email: nil).should raise_error(ActiveRecord::RecordInvalid)
end
...
這裏輸出:
Failures:
1) User a user (in general) is invalid without email
Failure/Error: Factory(:user, email: nil).should raise_error(ActiveRecord::RecordInvalid)
ActiveRecord::RecordInvalid:
Validation failed: Email is invalid, Email can't be blank
# ./spec/models/user_spec.rb:34:in `block (3 levels) in <top (required)>'
本來我是這樣的測試,但它保持失敗,所以我決定指定我期待的錯誤。
it "is invalid without email" do
Factory(:user, email: nil).should_not be_valid
end
謝謝,這完全有道理。你覺得讓(!:user){Factory(:user)}而不是之前做...結束? – botbot 2012-08-07 22:34:57
順便說一句,爲什麼你不建議*不*包裝在一個lambda {}或期待{}? – botbot 2012-08-07 22:41:24
我的意思是我不會建議通過檢查錯誤提示來檢查有效性。使用'lambda'來檢查在其他上下文中引發錯誤是完全正確的。 – 2012-08-07 22:47:40