【发布时间】:2014-08-19 10:02:41
【问题描述】:
我在断言块属性包含数组键时遇到问题。
我使用以下 XML 添加了指向我的客户帐户区域的链接:
<customer_account>
<reference name="customer_account_navigation">
<action method="addLink" translate="label" module="namespace_ordermigration">
<name>migration</name>
<path>migration/order/list/</path>
<label>Migrated Orders</label>
</action>
</reference>
</customer_account>
addLink 方法在块 Mage_Customer_Block_Account_Navigation 上调用,该块具有受保护的属性 $_links = array();
这是我可以通过EcomDev_PHPUnit_Test_Case_Controller 测试得到的最接近的结果:
public function testMyAccountButtonDefined()
{
$this->dispatch('migration/order/list');
$this->assertLayoutBlockPropertyEquals('customer_account_navigation', '_links', array('migration' => ''));
}
失败的:
1) Namespace_OrderMigration_Test_Controller_OrderController::testMyAccountButtonDefined
Failed asserting that two arrays are equal.
--- Expected
+++ Actual
@@ @@
Array (
- 'migration' => ''
+ 'migration' => Varien_Object Object (...)
+ 'account' => Varien_Object Object (...)
+ 'account_edit' => Varien_Object Object (...)
+ 'address_book' => Varien_Object Object (...)
...
有人知道我如何访问它正在测试的属性,以便我可以对结果进行更简单的 PHPUnit 测试吗?
另一个可能的选择是在EcomDev_PHPUnit_Test_Case_Controller 中围绕PHPUnit_Framework_Assert 的assertContains 方法创建一个新包装器,称为$this->assertLayoutBlockPropertyContains。这是一项相当多的工作,最好将其用于公开响应。
【问题讨论】: