2013-06-20 48 views
0

Magento有一个静态方法,在引发异常之前做一些额外的报告。我可以教PHPUnit Mage :: throwException * always *抛出一个异常吗?

/** 
* Throw Exception 
* 
* @param string $message 
* @param string $messageStorage 
* @throws Mage_Core_Exception 
*/ 
public static function throwException($message, $messageStorage = null) 
{ 
    if ($messageStorage && ($storage = self::getSingleton($messageStorage))) { 
     $storage->addError($message); 
    } 
    throw new Mage_Core_Exception($message); 
} 

这是保证抛出一个异常,所以它的轻度烦人,PHPUnit的代码覆盖率认为一个Mage::throwException语句后的括号来被发现的代码。

Shows code coverage analysis of code with no coverage following throwException statement.

我通过the PHPUnit documentation看了看,但是我没有看到任何非哈克的方式把它考虑覆盖的线路。 (我认为把一个死代码return声明在方法结束哈克,还是真的什么,我们必须做我们每次使用Mage::throwException时间。)

有一些方法我可以教PHPUnit的是Mage::throwException总是会引发异常,因此请将它与throw new WhateverException()相同(相对于覆盖范围)?

+0

除非[this](http://phpunit.de/manual/3.8/en/writing-tests-for-phpunit.html#writing-tests-for-phpunit.exceptions)有帮助,否则我认为你被卡住了用它。 – vascowhite

回答

1

我也有这个问题。

只要做到:

throw Mage::getException(...); 

和getException返回异常对象。否则你就会陷入困境。

相关问题