2014-04-04 2 views
1

내가 이런 기능이 젠드 프레임 워크 단위 테스트에 대한 기능을 삭제 하시겠습니까?모의 최대 2

답변

0

젠드 프레임 워크가 없으면 - 직접 모의 쓰기를하거나 모의 프레임 워크를 조롱하여 동적으로 생성합니다 (예 : Mockery).

하지만이 코드를 조롱해야하는 이유는 알 수 없습니다. if-else 연산자, 루프, 예외 예외는 없습니다. 매우 간단한 방법이므로 모든 방법이 동일한 방식으로 동일한 횟수로 호출 될 수 있습니다. 따라서이 기능을 조롱하면 어떤 이익도 없습니다.

이 함수의 단위 테스트는 스터브되어야하지만이 함수의 다른 구현은 언제든지 상수 결과를 반환합니다. 통합 테스트는 어떤 방식 으로든이 함수를 모방하거나 스텁 할 필요가 없습니다. 실제 결과 값을 확인하십시오.

+0

이 함수를 조롱하면 쓸모가 없으므로 데이터베이스에서 레코드 삭제가 제대로 작동하는지 확인 하시겠습니까? – Dante

+1

통합 테스트에서? 간단 해! 이 함수를 실행 한 후 동일한 WHERE 조건을 가진 SELECT에 의해 반환 된 행이 없는지 확인하십시오. 반환되지 않아야합니다. :) 당신은 완전히 조롱하여 이것을 확신 할 수 없습니다. 모의 목적은 "실행해야하는 모든 기능이 실행되었는지"를 확인하는 것입니다. 기본적으로이 코드에서 사용 된 "Sql"클래스를 조롱하고 "delete"명령이 실제로 데이터베이스 엔진으로 전송되는지 확인하지만 테스트가 복잡하고 실제로 아무 것도 보증 할 수 없습니다. – rufanov

+1

자동화 된 작성 방법 데이터베이스 엔진에 대한 통합 테스트는 트랜잭션을 기반으로합니다. 부분 테스트 코드는 새 트랜잭션을 생성하고 일부 (랜덤 또는 정적) 데이터를 삽입합니다 (필요한 데이터가 테스트 중에 DB에 존재하는지 확인). 테스트중인 act 부분 함수에서이 데이터에 대한 일부 동작을 assert 부분 테스트 코드에서 수행합니다. 예상되는 작업이 완료되었는지 확인합니다. 그게 전부입니다. "해야 할 일을하라"는 기능이 있는지 확인하고 테스트가 끝날 때 테스트 트랜잭션을 커밋하지 않았기 때문에 실제 데이터가 변경되었습니다. :) – rufanov