2013-09-05 4 views
2

html 문자열의 특정 콘텐츠를 phpunit으로 설정하는 가장 좋은 방법은 무엇입니까?html 콘텐츠를 주장하는 PHPUnit

젠드 응용 프로그램에는 사용할 수있는 어설 션이 있습니다. assertQuery*. Zend 응용 프로그램을 사용하고 있지 않다면? assertXml*은 적합하지 않습니다.

예를 들어, <div ... id="myId" ...>...</div>이라는 태그가 $htmlString에 있다고 주장하는 경우 id 속성의 위치를 ​​변경하면 테스트가 실패하지 않습니다.

답변

4

일부 라이브러리를 사용하여 HTML 문자열을 구문 분석 한 다음 라이브러리 API를 사용하여 어설 션을 작성하는 것이 좋습니다.

http://symfony.com/doc/current/components/dom_crawler.html

는 등 CSS 선택기, XPath를 사용하여 원하는 노드에 액세스 할 수 있습니다이를 사용하여, 당신은 속성 여부를 확인 할 수 있습니다

이 좋은 HTML/XML 파서의 많은 예를 들어 있습니다 그것의 위치와는 독립적으로 존재한다.

$crawler = new Crawler($html); 
$this->assertEquals(1, $crawler->filter('div#elementId')->count()); 
+2

좋은 접근 방식입니다. 'Crawler'에 대한 예제를 생각해 보면 PHP 내장 함수 나 미리 설치된 라이브러리를 생각하고있었습니다. 나는'DOMDocument'와 비슷하게 그것을 할 것입니다. 즉,'$ doc = DOMDocument; $ doc-> loadHTML ($ html); $ this-> assertTrue (bool) $ doc-> getElementById ('elementId'));' –

관련 문제