필자는 테스트 방법을 개선하기 위해 작업하기 시작했으며 레일즈뿐 아니라 Yii Framework에서 Fixtures 사용에 관해 읽었습니다. 픽스의 기본 개념을 이해하는 동안 (각 테스트 전에 특정 데이터 세트를로드한다는 점) 사전 테스트 데이터베이스 상태와 관련하여 명확하지 않습니다. 이 테스트는 프로덕션 인스턴스에서 실행되지 않지만 분명히 일부 테스트를 실행할 때마다 닦아 내고 싶지 않은 개발 모델의 데이터가있을 수 있습니다. 조명기 및 단위 테스트에 대한 배경 지식을 정리하는 데 도움을 줄 수 있습니까?데이터베이스/모델 픽스처 및 원래 상태
답변
기본적으로 CDbTestCase에서 파생 된 모든 테스트 클래스는 해당 setUp 함수에서 조명기를 가져 오려고 시도합니다.
자신의 클래스에서 $ fixtures 변수를 선언하지 않으면 보유하고있는 모든 조명기 세트를 가져올 것입니다 (따라서 테스트를 많이 할 경우 어떤 속도가 고려 될까요? 단지 필요한 것만)
사전에 특정 데이터가 있어야하며 테스트 중에 변경하지 않는 테이블이있는 경우 (예 : 제품 테이블에서와 같이) 테이블이 있는지 확인하십시오 데이터베이스 및 당신은 그것에 대한 조명기를 만들지 않습니다. Yii는 테이블을 만지지 않으며 예상대로 사용할 수 있습니다.
dev 작업이 개발 환경 (데이터베이스 yml 파일에 설정된대로)에 부합하는 동안 테스트가 데이터베이스에 대해 실행됩니다. 테스트 환경이 있으므로 실행중인 응용 프로그램을 "테스트"할 때 사용하는 데이터에 영향을주지 않고 알려진 상태로 설정할 수 있습니다.
희망 사항은 약간 정리하는 데 도움이됩니다.
기본적으로 : 비품은 DB의 데이터를 지울 것이므로 중요한 데이터가없는 특수 테스트 데이터베이스를 가리키는 다른/config 파일에서 테스트를 실행하십시오! – thaddeusmt
그러면 Yii는 조명기를로드하기위한 테이블의 테스트 복사본을 자동으로 만들거나 진행중인 뽀쿠 테스트 데이터가 여러 테스트에서 지속되도록 테스트 복사본을 구체적으로 만들어야합니까? – jmans
원본 테이블의 모든 테이블을 보유하고있는 데이터베이스의 복제본을 생성 할 필요가 없습니다. 그런 다음 test.php 설정 파일을 테스트에 사용 된 데이터베이스를 가리 키도록 수정합니다. 검사를하지 않고 조명기로 테스트를 실행하지 마십시오. 그렇지 않으면 일반 테이블이 지워집니다. – Blizz