2011-03-02 5 views

답변

4

아약스 응답 생성 방법에 따라 쉽지 않을 수도 있습니다. 컨트롤러를 사용하여 응답을 생성하는 경우 단원 테스트에서 적절한 함수를 호출하고 반환 된 HTML/XML을 확인할 수 있습니다. 응답이이 같은 컨트롤러 객체에 함수를 호출하여 생성되는 경우 예를 들어, :

$expected = "<html>whatever html you expect</html>"; 
$test_request = array(...); // parameters to test 
$actual = $controller->buildPage($test_request); 

$this->assertEquals($expected, $actual); 

응답이 생성되지 않은 경우 :

$htmlResponse = $controller->buildPage($_REQUEST); 

그런 다음이 장치는이 같은 응답을 테스트 할 수 있습니다

$_POST['parameter1'] = "test value"; // stuff whichever request object you're using 
             // with the values you need 
ob_start(); 
include('ajax_page.php'); 
$actual = ob_get_clean(); 
$expected = "<html>expected html as above</html>"; 

$this->assertEquals($expected, $actual); 

phpunit을 또한 제공 : - 같은 함수 호출은 AJAX 요청이 일부 동적 콘텐츠와 실제 페이지의 경우이 같은 뭔가를 할 수처럼 보인다 assertTag HTML 및 XML 생성 테스트에 대한 주장은 기대하는 태그를 포함하고 있습니다. 다소 까다롭기는하지만 응답을 반향하고 문자열과 비교하는 것보다 튼튼합니다.

궁극적으로, 특정 입력 (요청 매개 변수)이 주어지면 원하는 출력 (반환 된 HTML 또는 XML)을 얻게된다는 사실을 알고 싶습니다. AJAX 호출이라는 사실은 근본적으로 방정식을 변경하지 않습니다. AJAX 요청이 적절하게 만들어 졌는지 테스트하고 싶다면 JS 테스트를 통해 클라이언트 쪽에서 수행해야한다.

+0

위대한 작품! 그러나 setUp/tearDown을 사용하여 단일 단위 테스트 세션에서 여러 테스트를 실행하는 경우'function' 및'class' 정의를 별도의 PHP 파일로 추출해야 할 수 있습니다.이 파일은'require_once()'. '전역 적 (globals) '이 어떻게 사용되는지에 대해서도 염두에 두십시오; 함수 안에'include()'를 배치하는 단위 테스트 프레임 워크를 사용한다면. '전역 변수 '의 사용은이 경우 까다로울 수 있으므로 사용하지 마십시오. –

관련 문제