2009-12-14 6 views
1

레일즈가 단위 테스트에 데이터베이스 레이어를 통합한다는 것 외에도 (정확히는 단위 테스트가 아닙니다), 모델 상호 의존성을 테스트하면 어떻게 될까요? has_many/belongs_to:dependent => :destroy 인 경우 결합 모델의 관련 항목이나 항목이 실제로 고아를 떠나지 않도록 파괴되는지 확인하십시오.Rails Unit Testing 이해하기 : 하나의 테스트가 모델 상호 의존성을 테스트한다면 여전히 단위 테스트입니까?

이러한 테스트가 기능 또는 통합 테스트에 더 적합할까요?

다른 방법으로 물어보십시오 : 어떤 종류의 테스트를해야하는지에 대한 가이드가 있습니까? 나는 정말로 유용한 것을 발견하지 못했습니다.

답변

1

일반적으로 엄지 모델은 단위 테스트를 거치므로 컨트롤러는 기능적으로 테스트되고 뷰를 통해 통합 테스트가 수행됩니다. RSpec을 사용한다면 모델, 컨트롤러 및 뷰 스펙이 있지만 본질적으로 같은 것을 테스트해야합니다.

메소드에 대한 호출이 실제로 어떤 일을하지 않도록 액션을 모의 할 수 있지만 (Mocha 또는 Flexmock과 같은 보석 사용) 예상 된 동작이 일어나고 있는지 확인하고자합니다. 예 : MyClass.create 또는 MyClass.destroy가 호출됩니다. 특히 컨트롤러/뷰 테스트에서 모델에 대한 호출을 모의합니다.

내 경험으로는 데이터베이스를 사용하는 모델 및 연결에 문제가 없지만. 팩토리 걸 (Factory Girl) 또는 테스트 개체/데이터를보다 쉽게 ​​관리 할 수있는 비품 대신 사용할 수도 있습니다.

+0

+1 추가 포인터 – hurikhan77

0

단위 테스트의 단위는 항상 단일 클래스 또는 개체가 아닙니다. 상호 의존성을 테스트하는 것이 문제가되어서는 안됩니다. 나는 단위 테스트에서 단위를 정의하기위한 어떤 빠르고 엄격한 규칙도 발견하지 못했지만 종종 도메인 유도 설계의 아이디어를 사용하여 나를 안내합니다. 단일 집계의 테스트 동작이 일반적으로 단위 테스트로 유지 관리 가능한 테스트가 있습니다. 더 많은 집계 나 집계 및 서비스에 의존하는 테스트는 통합 테스트입니다.

+0

"통합 테스팅"은 직접 통제 할 수없는 외부 서비스를 통합 할 수 있지만 "단위 테스팅"은 "폐쇄 된 잘 정의 된 환경에서 테스트"로 받아 들여야한다는 것을 알았습니다. – hurikhan77

관련 문제