2012-12-25 2 views
4

마이클 하틀의 레일 튜토리얼의 6.20 다음 코드를 보여줍니다 목록 오해 user_with_same 전자 메일로 복사되었지만 @user는 파일의 어느 위치 에나 데이터베이스에 저장되지 않았습니다. 따라서 user_with_same_email.save 테스트는 매번 유효해야합니다. 그러나 테스트는 통과됩니다. 누군가 설명해주십시오 ... @user = User.new (...)에 암시적인 데이터베이스 저장이 있습니까? 나는 그것이 User.create (...) 있다면 저장 될 것이지만 새로운 메소드를 위해서는 아님을 안다. 감사!레일 튜토리얼 RSpec에

답변

4

암시 적 저장을 놓치지 않았습니다.

user_with_same_email 때문에 실존의 제대로

은 무엇 사양이 speccing되는 것은 피사체가 (즉, @user)이 저장되지 않을 수 있다는 점이다 (개인적으로 나는 항상 자동으로 실패하지 않은 확실하게! 저장 사용합니다) 저장하지 동일한 이메일을 사용하여 데이터베이스의 행을

+0

그 문제를 해결해 주셔서 감사합니다 ... 나는 그것에 대해 생각하고 있지 않았지만 코드는 @ user.should_not be_valid입니다. 어디 should_not 전화를 할 때 @ .. 사용자가 저장하려고 스펙 어딘가에 설명서가 있나요? –

+0

^나는 실제로 더 많은 독서를하고 있었고 유효하다는 것을 알았습니까? 메서드를 사용하여 be_valid 테스트에서 블록이 모델 파일에서 레일스 유효성 검사를 통과하는지 여부를 테스트합니다. 고유성 유효성 검사가 있으므로이 모델은 고유성을 데이터베이스에서 검사합니다. @ .. user.save가 없으므로, 지금 다시 한번 감사드립니다! –