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