PHP - 调用私有方法进行测试,什么是正确的设计?

时间:2012-12-01 14:39:32

标签: php unit-testing private-methods

  

可能重复:
  PhpUnit private method testing

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

单元测试私有方法通常是一个坏主意,但如果你真的想,反思就是要走的路。这应该这样做:

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

HTH