Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-调用私有方法进行测试,什么';这是正确的设计吗?_Php_Unit Testing_Private Methods - Fatal编程技术网

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

PHP-调用私有方法进行测试,什么';这是正确的设计吗?,php,unit-testing,private-methods,Php,Unit Testing,Private Methods,可能重复: 在我的单元测试中,我需要调用一个私有方法来将我的fixture设置为给定的状态。另一方面,我不想公开这个方法。我该怎么做呢?为什么不保护这些函数并创建一个用于测试的派生类呢?该类可以具有用于测试的公共函数,这些函数可以初始化各种变量等。为什么不保护这些函数并创建一个用于测试的派生类?该类可以具有用于测试的公共函数,这些函数可以初始化各种变量等。单元测试私有方法通常不是一个好主意,但是如果您真的想这样做,反射是一种方法。这应该做到: $reflection_class = new R

可能重复:


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

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

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

单元测试私有方法通常不是一个好主意,但是如果您真的想这样做,反射是一种方法。这应该做到:

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

HTH

单元测试私有方法通常是一个坏主意,但是如果您真的想,反射是一种方法。这应该做到:

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

HTH

并且不需要有子类-您可以模拟这样的类。当然,它将创建具有随机名称的子类,但您不需要自己创建子类,也不需要有子类——您可以模拟这样的类。当然,它将使用随机名称创建子类,但您不需要自己创建子类。谢谢,我将标记它以便关闭。对不起,我没找到。谢谢,我正在标记它以便关闭。对不起,我没找到。