【问题标题】:EcomDev_PHPUnit assert block property containsEcomDev_PHPUnit 断言块属性包含
【发布时间】: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_AssertassertContains 方法创建一个新包装器,称为$this-&gt;assertLayoutBlockPropertyContains。这是一项相当多的工作,最好将其用于公开响应。

【问题讨论】:

    标签: php magento phpunit


    【解决方案1】:

    这就是我结束测试块属性的方式,该属性包含我在 layout.xml 中定义的数组键,更多的是直接路由,只有当属性在块中公开时才有可能,所以不是一个有效的答案只是一个解决方法

    public function testMyAccountButtonDefined()
    {
        $this->dispatch('migration/order/list');
    
        /* @var $block Mage_Customer_Block_Account_Navigation */
        $block = $this->app()->getLayout()->getBlock('customer_account_navigation');
    
        $this->assertContains('migration', array_keys($block->getLinks()));
    }
    

    【讨论】:

      猜你喜欢
      • 2018-09-21
      • 2017-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-23
      相关资源
      最近更新 更多