gpt4 book ai didi

PHPUnit 模拟对象和静态方法

转载 作者:IT王子 更新时间:2023-10-29 00:00:24 27 4
gpt4 key购买 nike

我正在寻找测试以下静态方法的最佳方法(特别是使用 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 and Mocking Static Methods 的博文.使用 PHPUnit 3.5 和 PHP 5.3 以及对后期静态绑定(bind)的一致使用,您可以做到

$class::staticExpects($this->any())
->method('helper')
->will($this->returnValue('bar'));

更新: staticExpectsdeprecated as of PHPUnit 3.8并将在以后的版本中完全删除。

关于PHPUnit 模拟对象和静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2357001/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com