我正在寻找测试以下静态方法(特别是使用Doctrine模型)的最佳方法:
class Model_User extends Doctrine_Record { public static function create($userData) { $newUser = new self(); $newUser->fromArray($userData); $newUser->save(); } }
理想情况下,我将使用模拟对象来确保调用了“ fromArray”(具有提供的用户数据)和“ save”,但这是不可能的,因为该方法是静态的。
有什么建议么?
PHPUnit的作者Sebastian Bergmann最近发表了一篇有关Stubbing和Mocking静态方法的博客文章。使用PHPUnit 3.5和PHP 5.3以及一致使用后期静态绑定,您可以
$class::staticExpects($this->any()) ->method('helper') ->will($this->returnValue('bar'));
更新: staticExpects被弃用的PHPUnit 3.8的,将被更高版本的完全去除。
staticExpects