【发布时间】:2012-12-20 00:41:28
【问题描述】:
我正在使用 phpunit 和 ecomdev 模块对 Magento 进行单元测试。对于特定类,最后需要测试的代码是尝试将模型保存在 try/catch 中的异常。我能看到的唯一方法是临时更改数据库。所以我更改了有效的表名,但是我必须重新命名它。如果测试本身失败,我就处于不一致的状态。
我真的很想测试该代码,以便覆盖率达到 100%。否则我会想知道为什么它是 98%,直到我查看代码并记住异常没有经过测试。
我试图关闭连接,但我需要它来记录异常。所以我想知道我是否可以暂时对模型或资源模型做些什么来导致保存引发异常。下次加载时会重置的东西。
请注意 - 无论如何我都看不到操作数据会导致异常。同样,我看到在生产中导致异常的唯一情况是数据库连接消失。
有什么想法吗?
编辑: 示例代码:
public function logStuff($stuff){
try{
Mage::getModel('my/stuff')
->setData('stuff', $stuff)
->save();
}catch(Exception $e){
Mage::helper('log/error')->logError(__METHOD__, "Could not save stuff: ". $e->getMessage());
}
}
【问题讨论】:
-
您的解决方案是存根适当的逻辑,这样它就会抛出异常。你能发布你想要测试的代码示例吗?如果你会发布它,我可以说更多。
-
我添加了示例代码。这很简单。如果保存失败,它会调用另一个方法将异常消息记录到表中。谢谢!
标签: php unit-testing magento phpunit