有什么办法可以用嘲笑来模仿私有静态方法?

时间:2019-01-17 20:54:02

标签: php unit-testing phpunit mockery

例如,我有一个像下面的类SampleService,现在如何使用PHPUnit为getName()方法编写单元测试?更具体地说,我该如何使用Mockery模拟self::_getName();?如果这不可能,那么针对这种情况编写单元测试的最佳方法/方法是什么?谢谢。

class SampleService implements Service
{    
    public function getName(){
        $name = self::_getName();
        return 'Mr. '.$name;
    }

    private static function _getName(){
        return 'Some Name';
    }
}

1 个答案:

答案 0 :(得分:0)

否,您不应在TDD中使用它们。仅当您永远不需要模拟它时,才使用它们。

如果需要模拟它-将所有代码移到一个单独的类中并模拟该类。