这里有一个有趣的,我不能为我的生活弄清楚。
我已经创建了一些扩展PHP DOMNode类的类,并且在尝试测试它们时,我在标题中收到错误,我不明白为什么,因为Node肯定来自正确的Document,因为我理解它。
我的PHPUhit测试如下:
class XPathTest extends \PHPUnit_Framework_TestCase
{
public function setUp()
{
$this->doc = new Document();
$this->xpath = new XPath($this->doc);
}
/**
* A single node should be returned from this expression
*/
public function testEvaluate()
{
$xml = '<data><test>node</test></data>';
$this->doc->loadXML($xml);
$result = $this->xpath->evaluate('/data/test/text()', $this->doc);
$this->assertInstanceOf('\\DOMText', $result);
$this->assertEquals($result->nodeValue, 'node');
}
}
此时我的扩展类没有什么特别之处,它们具有父级的默认功能。
DOMXPath::evaluate(): Node From Wrong Document
之前有没有人遇到此错误?
如果我没有将$this->doc
传递给xpath evaluate函数,我根本就没有结果。
答案 0 :(得分:1)
事实证明,在DOMDocument加载了XML之后,必须将DOMXPath对象添加到DOMDocument 。
因此,以下是实例化此测试的正确方法:
class XPathTest extends \PHPUnit_Framework_TestCase
{
public function setUp()
{
$this->doc = new Document();
$xml = '<data><test>node</test></data>';
$this->doc->loadXML($xml);
$this->xpath = new XPath($this->doc);
}
/**
* A single node should be returned from this expression
*/
public function testEvaluate()
{
$result = $this->xpath->evaluate('//test/text()');
$this->assertInstanceOf('\\Manneken\\Dom\\Text', $result);
$this->assertEquals($result->nodeValue, 'node');
}
}
咄。