문제

최근에 저는 제품의 이메일 2SMS 기능을 작업하기 시작했습니다. 프로젝트에 가입하면이 구성 요소는 단위 테스트로 코드 범위가 0입니다. 레거시 코드.

작업을 시작한 이래로 테스트 우선 접근 방식을 사용하고있었습니다. 그러나 코드 품질은 매우 낮았습니다. 그것을 분할하기가 매우 어려웠고 단위 테스트로 작은 덩어리를 테스트하기 때문에 통합 테스트를 작성하기로 결정했습니다.

PHP 스크립트가 있는데, 일부 메시지 정보를 받아들이고, DB의 사용자를 검색하고, 모든 것이 정상인 경우 정보를 저장합니다.

$last_line = system('php emailtosms.php -file=unicode_message.txt ', $retval);

$this->assertStringExistsInLogFile('Email to SMS message was not sent');

나쁜가요? 이 문제를 어떻게 해결 하시겠습니까?

도움이 되었습니까?

해결책

그렇게 좋지 않습니다.

emailTosms.php 스크립트를 명령 줄 아르기를 처리하는 간단한 래퍼로 사용하여 더 낮은 레벨에서 테스트 한 다음 더 테스트 가능한 클래스로 전달하십시오. 최종 단계에 따라 거의 모든 보내기를 제외하고는 단위 테스트를 작성하여 최종 보내기를 할 수 있습니다 (실제로 보내는 최종 단계를 조롱하고 변수에 저장 한 다음 유효한 것을 확인하십시오).

최종 통합은 전체 클래스 엔드 투 엔드를 실행하고 출력을 확인하여 최종 로그 또는 로그에 넣을지면 최종 로그 또는 약간 더 높은 수준을 보았습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top