PhpUnit和Symfony:模拟服务不工作

PhpUnit和Symfony:模拟服务不工作,symfony,unit-testing,testing,phpunit,Symfony,Unit Testing,Testing,Phpunit,我正在使用Symfony 3.3和PHPUnit 5.7,并试图模拟一个用于测试api控制器的服务 控制员: class ApiTestManager extends BaseApiController{ public function getAction(): View { $response = $this->get('app.business.test_api')->getResponse(); return $this->

我正在使用Symfony 3.3和PHPUnit 5.7,并试图模拟一个用于测试api控制器的服务

控制员:

class ApiTestManager extends BaseApiController{
    public function getAction(): View
    {
        $response = $this->get('app.business.test_api')->getResponse();
        return $this->view($response);
    }}
测试类:

class ApiTestManagerTest extends WebTestCase {
public function testApiCall()
{
    $client = static::createClient();

    $service = $this->getMockBuilder(ApiTestManager::class)
        ->disableOriginalConstructor()
        ->setMethods(['getResponse'])
        ->getMock()
        ->expects($this->any())
        ->method('getResponse')
        ->will($this->returnValue(new Response()));

    $client->getContainer()->set('app.business.test_api', $service);
    $client->request('GET', 'de/api/v1/getResponse');

    $this->assertEquals(200, $client->getResponse()->getStatusCode());
}}
我花了数小时试图找出错误,但每次执行此测试时,都会出现以下错误:

Error: Call to undefined method PHPUnit_Framework_MockObject_Builder_InvocationMocker::getResponse()

谁能告诉我我的代码有什么问题吗?谢谢:)也许吧?这是我唯一看到的

$service = $this->getMockBuilder(ApiTestManager::class)
        ->disableOriginalConstructor()
        ->setMethods(['getResponse'])
        ->getMock();
$service->expects($this->any())
        ->method('getResponse')
        ->will($this->returnValue(new Response()));

我建议使用完全限定的类名作为
getMockBuilder()
的参数。还有,您是否扩展了正确的WebTestCase类,即
Symfony\Bundle\FrameworkBundle\Test\WebTestCase
?不幸的是,这没有什么区别……是的,这是正确的WebTestCase:)是的,谢谢……但我不明白为什么:D您知道为什么我不能像以前那样链接这些方法吗?真的不明白为什么,正如您可以看到的
getMock()
返回
generator
的结果,但我在文档、示例和项目中经常看到这种方式。。。