Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.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
如何使用PHPUnit测试静态函数调用_Php_Symfony_Static_Mocking_Phpunit - Fatal编程技术网

如何使用PHPUnit测试静态函数调用

如何使用PHPUnit测试静态函数调用,php,symfony,static,mocking,phpunit,Php,Symfony,Static,Mocking,Phpunit,例如,如何测试SymfonyRequest类中的静态createFromGlobals方法 我看过这个例子,但它只适用于调用方和被调用方在同一个类中的情况 $class::staticExpects($this->any()) ->method('helper') ->will($this->returnValue('bar')); 做这件事的首选方法是什么。举个嘲弄的例子也可以。 他们谈论的是一个没有示例的类别名mock。如果您在代码中使用静态

例如,如何测试Symfony
Request
类中的静态
createFromGlobals
方法

我看过这个例子,但它只适用于调用方和被调用方在同一个类中的情况

$class::staticExpects($this->any())
      ->method('helper')
      ->will($this->returnValue('bar'));
做这件事的首选方法是什么。举个嘲弄的例子也可以。
他们谈论的是一个没有示例的类别名mock。

如果您在代码中使用静态调用,那么根据静态调用实际执行的操作,您会遇到一些困难。不可能嘲笑它

取决于你在做什么,你甚至可能不想嘲笑它。例如,如果您正在测试控制器,则不需要模拟它。通过任何方法发布适当的方法(GET、Post等),并创建请求对象。仅替换系统外部的任何服务(数据库等),并确保您的响应正确。这个测试并不是严格意义上的“单元”测试,但它表明您的所有类都在一起正常工作


如果正在创建,模型中的此对象会在某处更改设计,以便传入
请求
对象。然后,您可以使用正确的行为创建一个
mockRequest
,而无需尝试模拟静态方法调用。

谢谢,我理解,然后集中精力进行功能测试