모델이 레일에서 유효하다는 것을 테스트하는 모범 사례 방법은 무엇입니까?레일이 양식 유효 함을 주장합니다.
예를 들어 email_address 속성의 고유성을 검사하는 User 모델이있는 경우 양식 게시가 오류를 반환했는지 (또는 더 좋게는 해당 필드에 대한 오류가 특별히 반환 됨) 확인하는 방법은 어떻게됩니까?
나는 이것이 분명해야한다고 생각하지만, 빨리 알아 내기 때문에 효과적으로 Google 루비 질문에 필요한 어휘가 아직 없다.
모델이 레일에서 유효하다는 것을 테스트하는 모범 사례 방법은 무엇입니까?레일이 양식 유효 함을 주장합니다.
예를 들어 email_address 속성의 고유성을 검사하는 User 모델이있는 경우 양식 게시가 오류를 반환했는지 (또는 더 좋게는 해당 필드에 대한 오류가 특별히 반환 됨) 확인하는 방법은 어떻게됩니까?
나는 이것이 분명해야한다고 생각하지만, 빨리 알아 내기 때문에 효과적으로 Google 루비 질문에 필요한 어휘가 아직 없다.
가장 쉬운 방법은 아마 다음과 같습니다 당신이 설정 방법에 논리를 복제 할 수있는 경우에 당신이이 문제에 대해 별도의 테스트 케이스를 만들려고하지 않는 것이 가능 물론
class UserEmailAddressDuplicateTest < ActiveSupport::TestCase
def setup
@email = "[email protected]"
@user1, @user2 = User.create(:email => @email), User.new(:email => @email)
end
def test_user_should_not_be_valid_given_duplicate_email_addresses
assert [email protected]?
end
def test_user_should_produce_error_for_duplicate_email_address
# Test for the default error message.
assert_equal "has already been taken", @user2.errors.on(:email)
end
end
, 두 테스트 모두에 포함 시키거나 (또는 개인 메소드에 넣으십시오).
또는 fixtures/users.yml
과 같은 고정 장치에 첫 번째 (참조) 사용자를 저장하고 각 테스트에서 중복 주소가있는 새 사용자를 인스턴스화하기 만하면됩니다.
리펙터가 적합하다고 생각합니다!
http://thoughtbot.com/projects/shoulda/
진작은 많은 다른 것들과 함께 검증과 같은 테스트 것들에 대한 매크로가 포함되어 있습니다. TDD를 체크 아웃 할만한 가치가 있습니다.
단위 테스트를 통해 모델을 테스트하는 것은 물론 1 단계입니다. 그러나 이것이 반드시 사용자가 필요한 피드백을 얻을 것이라는 것을 보장하지는 않습니다.
Section 4 of the Rails Guide on Testing에는 기능 테스트 (예 : 컨트롤러 및 뷰 테스트)에 대한 많은 정보가 있습니다. 여기에는 몇 가지 기본 옵션이 있습니다 : 플래시에 오류에 관한 메시지가 있는지 확인하거나 assert_select를 사용하여 오류가 발생했을 때 생성 된 실제 HTML 요소를 찾습니다. 후자는 실제로 사용자가 실제로 메시지를 받을지 테스트하는 유일한 방법입니다.
errors.on 당신이 원하는 무엇
http://api.rubyonrails.org/classes/ActiveRecord/Errors.html#M002496
obj.errors.on @ (: 이메일) 필드가 유효한 경우 nil을 반환하고, 오류 메시지 중 하나 문자열의 문자열이나 배열에 하나 이상의 오류가있는 경우
Shoulda rocks! 테스트 스위트 개선 및 DRY 테스트 작성에 도움이되는 플러그인. –