1

有没有办法重置所有视图助手的状态,例如删除所有添加的脚本headScript()?即使我正在为每个测试创建一个新的控制器和视图,以下单元测试也会看到在一个单元测试中添加的脚本和元标记。这会导致误报和误报。

4

2 回答 2

4

查看这些容器的抽象类 ( Zend_View_Helper_Placeholder_Container_Abstract),我发现它扩展了 ArrayObject。每当您set使用包含您设置的值的数组替换该数组的值时。当 you 时append,它会获取旧值并将新值移到数组上。因此,理论上,您可以使用exchangeArray方法通过传递一个空白数组(完全未经测试)来清除任何值:

$this->view->headScript()->exchangeArray(array());
于 2011-02-22T21:47:10.040 回答
3

Marcin 的评论让我找到了我们的测试框架中问题的根本原因,即占位符注册表在运行获取注册表快照的代码之前被添加到 Zend 注册表中。因此,当删除所有新注册表对象的代码运行时,它不再删除占位符注册表。

要重置所有基于占位符的视图助手的状态,请使用以下命令:

$registry = Zend_Registry::getInstance();
unset($registry['Zend_View_Helper_Placeholder_Registry']);
于 2011-02-22T22:46:32.910 回答