私はSymfony 3.3とPHPUnit 5.7を使用しています。私はAPIコントローラをテストするためのサービスを模擬しようとしています。PhpUnitとSymfony:モックサービスが動作しない
コントローラ:
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()
誰も私のコードで何が間違っていると言うことができますか?ありがとう:)
私は 'getMockBuilder()'のパラメータとして完全修飾クラス名を使用することをお勧めします。そして、正しいWebTestCaseクラス、 'Symfony \ Bundle \ FrameworkBundle \ Test \ WebTestCase'を拡張しましたか? –
残念ながら、これは違いはありません...はい、正しいWebTestCase :) – jennymo