phpunit与Zend_Dom_Query

时间:2011-11-11 16:24:06

标签: phpunit zend-dom-query

$domDoc = new DOMDocument();
$domDoc->loadHTML($docSrc);
$xpath  = new DOMXPath($domDoc);
$nodeList = $xpath->query("//a[@class='active' and @href='/advanced-2-0.html']");
$this->assertTrue($nodeList->length == 1);

如果$docSrc是这样的话,这段代码很有用:

$docSrc = '<div><a class="active" href = "/advanced-2-0.html']"></div>';

但是当我将HTML分配给$docSrc时:

$this->dispatch($_SERVER['REQUEST_URI']);
$html = $this->getResponse()->getBody();

它不起作用。我打印$html,里面的一切都很好;我无法解释它,因为在这两种情况下它都是一个字符串。

我收到错误:

  

AccountControllerTest::testIfAllow DOMDocument::loadHTML(): Namespace prefix fb is not defined in Entity, line: 54

我也尝试过:

$domDoc->loadHTML("$this->getResponse()->getBody()");

错误不会出现,但结果为空。

1 个答案:

答案 0 :(得分:1)

您必须在输出中使用FBML,例如{Like}按钮<fb:like ...>。您可以将输出包装在声明命名空间的<html>元素中。

更新:现在我正在查看代码,我们还必须切换到loadXML()而不是loadHTML()并设置libxml的recover标志:< / p>

$html = '<html xmlns:fb="http://www.facebook.com/2008/fbml">'
        . $this->getResponse()->getBody()
        . '</html>';
$domDoc = new DOMDocument();
$domDoc->recover = true; // attempt to handle non-well-formed documents
$domDoc->loadXML($html);
...