PhpUnit和Symfony:模拟服务不工作
我正在使用Symfony 3.3和PHPUnit 5.7,并试图模拟一个用于测试api控制器的服务 控制员: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->
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
的结果,但我在文档、示例和项目中经常看到这种方式。。。