2016-07-07 28 views
1

関数の実行後に実際のデータベースのデータをチェックしてクラスをテストしたい。phpunit統合テストsymfony app - サービスをテストに挿入する方法?

私は、私が必要とするサービス、例えばいくつかのリポジトリクラスを挿入することはできません。

は、これまでのところ、私はこれを書いている:

namespace Tests\integration\Service\JourneyRunner\EmailConditionCheck; 

use PHPUnit_Framework_TestCase; 
use NG\Model\Journey\EmailConditionCheckRepositoryInterface; 

class EmailConditionCheckServiceTest extends PHPUnit_Framework_TestCase 
{ 

    private $emailConditionCheckQueueRepository; 

    public function __construct(
     EmailConditionCheckQueueRepositoryInterface $emailConditionCheckQueueRepository 
    ) { 
     $this->emailConditionCheckQueueRepository; 
     parent::__construct(); 
    } 

    public function testPrepareEmailContentForSending() 
    { 
     echo 'aaa'; 

     $this->assertEquals(1, 1); 


    } 
} 

私はその引数が、現在間違っている知っているが、エラーから、私はそれていることがわかり

<parameter key="tests.integration.service.journey_runner.email_condition_check.email_condition_check_service_test.class">tests\integration\Service\JourneyRunner\EmailConditionCheck\EmailConditionCheckServiceTest</parameter> 

<service id="tests.integration.service.journey_runner.email_condition_check.email_condition_check_service_test" class="%tests.integration.service.journey_runner.email_condition_check.email_condition_check_service_test%"> 
      <argument type="service" id="ng.infrastructure.persistence.time_trigger_queue_repository" /> 
     </service> 

をservices.xmlのためにテストサービスを追加しました間違った議論も得られない - それは何も得られない。

PHP Fatal error: Uncaught TypeError: Argument 1 passed to Tests\integration\Service\JourneyRunner\EmailConditionCheck\EmailConditionCheckServiceTest::__construct() must be an instance of Tests\integration\Service\JourneyRunner\EmailConditionCheck\EmailConditionCheckQueueRepositoryInterface, none given, called in /var/www/api.notification.guru/ng-api-service/vendor/phpunit/phpunit/src/Framework/TestSuite.php on line 475 and defined in /var/www/api.notification.guru/ng-api-service/tests/integration/Service/JourneyRunner/EmailConditionCheck/EmailConditionCheckServiceTest.php:12 

情報を検索しようとしましたが、見つかりませんでした。注入しないか、分かった

答えて

0

が、コンテナをgetingする結果を与え、私が欲しい:

<?php 

namespace Tests\integration\Service\JourneyRunner\EmailConditionCheck; 

use PHPUnit_Framework_TestCase; 
use NG\Model\Journey\EmailConditionCheckRepositoryInterface; 
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; 

use NG\Model\Uuid; 

class EmailConditionCheckServiceTest extends KernelTestCase 
{ 

    private $emailConditionCheckQueueRepository; 

    protected function setUp() 
    { 
     self::bootKernel(); 

     $this->container = static::$kernel->getContainer(); 

     $this->emailConditionCheckQueueRepository = $this->container->get('ng.infrastructure.persistence.email_condition_check_repository'); 
    } 


    public function testPrepareEmailContentForSending() 
    { 

     $this->emailConditionCheckQueueRepository->get(Uuid::fromString('1')); 

     $this->assertEquals(1, 1); 
    } 
} 

もphpunit.xmlを作成するために必要な - appディレクトリを設定します。 Appディレクトリは、私が理解したように、あなたのプロジェクトにAppKernel.phpがある場所です。

<?xml version="1.0" ?> 
<phpunit> 
    <php> 
     <server name="KERNEL_DIR" value="app/" /> 
    </php> 
</phpunit> 

とパラメータ

--configuration=phpunit.xml 
を命じるphpunitに渡します
関連する問題