1

단위 테스트 또는 다른 방법으로 절차 코드를 테스트 할 수있는 방법이 있는지 물어보고 싶습니다. 예를 들어OOP 이외의 테스트 PHP

나는 아래의 간단한 코드가 있습니다 :

$a = 10; 
$b = 20; 

for($i = $a; $i < $b; $i++){ 
    echo 'Loop ' . $i . PHP_EOL; 
} 

I 변수는 변수의 유형을 확인하실 수 있습니다 또한, 존재한다면 나는 내가 할 수있는 출력 버퍼링, 기능에 isset() 다른 빌드 확인할 수 있다는 것을 알고 출력을 가져오고 루프가 실행 된 횟수를 계산하십시오. ... 루프가없는 경우 루프를 검사 할 수 있습니까? while 루프입니까?

전체 PHP 파일을 얻을 수 있고 정규식을 발견했지만 어쩌면 거기에 저를 보여주는 일종의 마법 기능이 있습니다.

+0

왜 특정 종류의 루프가 있는지 테스트 해보십시오. 그건 중요하지 않아. – ShiraNai7

+0

@ ShiraNai7 알아 두지 만 사용 된 루프의 종류를 알아야합니다. – rafwlaz

답변

2

캡슐화가 부족한 레거시 파일의 경우 최대한 높은 수준에서 테스트하는 것이 좋습니다.

이 파일의 경우 웹 서버 수준에서 테스트 할 수 있습니까? 기능 테스트가 아닌 단위 테스트입니까? 예 :

    당신이 위에 게시 된 파일
  • 예상대로 내용이 Loop ...\n ... 인 주장을 제공하는 엔드 포인트 요청을 테스트 스위트
  • 의 시작 부분에 웹 서버를 시작
  • .

출력이 아닌 구현 (어떤 종류의 루프가 사용되는지, 설정되는 변수 등) 만하면 테스트를 보호하면서 코드를 더 쉽게 리팩토링 할 수 있어야합니다. 출력이 예상 한 것과 같은지 확인하십시오. 웹 서버 기능 테스트 할 수없는 경우

, 당신은 비슷한 방법으로 출력을 캡처하는 단위 테스트를 만들 수 있습니다

ob_start(); 
include 'your_php_file_listed_above'; 
$out = ob_get_clean(); 

은 그런 다음 $를 주장 할 수 올바르게 Loop .. \n ...이 포함되어 있습니다.

리팩터링 속도가 느려질 수 있으므로 어떤 루프가 사용되는지, 어떤 변수가 설정되는지와 같은 특정 구현 세부 사항에 대해 어 써트하지 않는 것이 좋습니다.