例如,我如何测试Symfony createFromGlobals
类中的静态Request
方法?
我看到了这个例子,但它只适用于调用者和被调用者属于同一个类时。
$class::staticExpects($this->any())
->method('helper')
->will($this->returnValue('bar'));
执行此操作的首选方法是什么。 Mockery的一个例子也可以。 他们在没有示例的情况下讨论类别名模拟。
答案 0 :(得分:1)
如果您在代码中使用静态调用,那么根据静态调用实际执行的操作,您会遇到困难。嘲笑它是不可能的。
根据您的工作情况,您甚至可能不想嘲笑它。例如,如果您正在测试控制器,则不需要模拟它。通过任何方法发布适当的方法(GET,POST等)并创建请求对象。仅替换系统外部的任何服务(数据库等),并确保您的响应正确。这个测试严格来说不是一个"单位"测试但显示所有课程都在一起正常工作。
如果您正在创建,则某个模型中的此对象会更改设计,以便传入Request
对象。然后,您可以创建具有正确行为的mockRequest
,而无需尝试模拟静态方法调用。