【问题标题】:PHP - calling a private method for testing, what's the correct design? [duplicate]PHP - 调用私有方法进行测试,正确的设计是什么? [复制]
【发布时间】:2012-11-19 13:46:19
【问题描述】:

可能重复:
PhpUnit private method testing

在我的单元测试中,我需要调用一个私有方法来将我的设备设置为给定状态。另一方面,我宁愿不公开这种方法。我该怎么办?

【问题讨论】:

  • 谢谢,我将其标记为关闭。抱歉我没找到。

标签: php unit-testing private-methods


【解决方案1】:

为什么不保护这些函数并创建一个派生类来进行测试呢?该类可以具有用于测试的公共函数,可以初始化各种变量等。

【讨论】:

  • 而且没有必要有一个子类——你可以模拟这样的类。当然,它会创建随机名称的子类,但您不需要自己创建子类。
【解决方案2】:

对私有方法进行单元测试通常是个坏主意,但如果你真的想这样做,反射是最好的选择。应该这样做:

$reflection_class = new ReflectionClass($object_under_test);
$method = $reflection_class->getMethod('nameOfMethod');
$method->setAccessible(true);
$method->invoke($object_under_test, $param);

HTH

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多