2010-11-19 4 views
1

현재 아약스 호출을 관리하고 전달하는 PHP 용 간단한 프레임 워크를 개발 중입니다. 이 기능 중 하나는 백엔드에서 발생하는 상황에 따라 적절한 헤더를 자동으로 처리한다는 점입니다. 지난 며칠 동안 나는 PHPUnit에 대한 많은 단위 테스트를 작성하기 시작했으며 괜찮은 것을 얻으려고 노력하고 있습니다. code coverage. (그렇습니다. 그 자체만으로는 높은 코드 커버리지가 전혀 의미가 없습니다. 그러나 여전히 좋은 지표입니다.)코드가 로컬에서 실행되지 않는 코드 커버리지

그러나 필자는 PHP에 대한 헤더를 보내거나 체크하지 못하기 때문에 CLI 모드 인 경우 로컬 웹 서버를 통해 많은 테스트를 수행해야합니다. 이를 통해 헤더와 응답 본문을 쉽게 확인할 수 있습니다. 불행하게도이 테스트 중에 실행 된 코드는 당연히 PHPUnit에서 추적하지 않습니다. (로컬에서 검사 할 수있는 모든 코드는 로컬에서 검사되지만 코드와 관련된 모든 것은 해당 범주에 속하지 않습니다.)

header() 호출을 캡슐화하고 교체 할 수 있음을 알고 있습니다. mock 객체로 테스트하는 동안. 그러나 헤더 교체의 전체 로직을 다시 구현해야하고, 잠재적 인 모든 단점과 버그를 가지고 있지 않으므로 실제로 발생하는 것 대신 내 자신의 header()- 구현을 테스트 할 것입니다. 내가 하고 싶지 않아요.

제 질문은 이것이라고 생각합니다. 코드 커버리지 보고서에 "원격 호출"을 포함시킬 수 있습니까? 아니면 실제 상황에서 테스트하기 위해 100 % 코드 커버리지를 놓치고 있다는 사실을 받아 들여야합니까?

답변

0

분명히 할 방법이 없습니다.

ircmaxell의 대답은 흥미 롭지 만 실제로는 내 질문에 대답하지 않았습니다. 따라서이 대답을 받아 들였습니다.

0

실제로 코드베이스 전체를 100 % 커버하는 것은 실제로 불가능합니다. 정말로 100 %가 응용 프로그램의 핵심 (라이브러리 및 재사용 된 구성 요소)에 있어야합니다. 나머지는 테스트하는 것이 좋지만, 테스트하기가 어려운 상황이있는 경우, 테스트 할 수없는 몇 줄의 코드에 자신을 스트레스하지 마십시오.

귀하의 특정 문제에 관해서는, 나는 그런 종류의 단위 테스트를 작성하지 않았을 것입니다. 내가 쓴 것은 Selenium HQ을 사용하는 UI 테스트입니다. PHPUnit은 여전히 ​​완전히 자동화되어 있으며 PHPUnit 내에서 실행되지만 하나 이상의 브라우저를 사용합니다. 단위 테스트보다 통합 또는 수용 테스트가 더 많지만 실제로는 잘 작동합니다 ...

+0

Selenium을 사용해 본 경험이 있으며 훌륭한 도구이지만 실제로는 여기에 적용되지 않습니다. 어쩌면 그게 내 문제를 어떻게 설명했는지 분명하지 않을 수 있습니다. – n3rd

+0

글쎄,이 몇 가지 참조를 주어진 : [그래서 질문] (http://stackoverflow.com/questions/679218/best-way-to-inspect-http-response-headers-with-selenium), [구글 그룹] (http : //groups.google.com/group/selenium-users/browse_thread/thread/3e9e08000e58ccd1/1205af3c6b161cc4? pli = 1) ...하지만 문제를 다른 방식으로 설명하고 싶다면 계속 시도해 보겠습니다. 도와주세요 ... – ircmaxell

+0

헤더 나 응답 자체를 액세스하거나 테스트하는 데 문제가 없습니다. Zend_Http_Client를 사용합니다. 나는 셀레늄이이 특별한 경우에 제공해야하는 추가 이득이 무엇인지 정말로 알지 못한다. – n3rd

관련 문제