LIIP 기능 테스트 (symfony 2.8)에서 조명기를 추가하는 방법은 무엇입니까?

아민 잘 룰리

기능 테스트에 픽스쳐를 추가하고 싶습니다 ( 심포니 2.8의 LiipFunctionalTestBundle기반으로 합니다. 내가 작업하는 dev 데이터베이스라도 픽스쳐를 추가해야합니다.

  • 지역 데이터 (국가, 지역, 카운티)
  • 차량 브랜드 및 모델
  • ...

따라서 각 기능 테스트 후에 DB를 제거하는 것은 나에게 좋지 않습니다.

주의 사항 : 명령 줄을 통한 조명기 추가 (제거하지 않음)는 성공적으로 작동합니다.php app/console doctrine:fixtures:load --append

그래서 아래는 내 기능 테스트입니다.

<?php

namespace Minn\APIBundle\Tests\Controller;

use Liip\FunctionalTestBundle\Test\WebTestCase as WebTestCase;
//use Symfony\Bundle\FrameworkBundle\Test\WebTestCase as WebTestCase;
use Minn\APIBundle\Tests\Fixtures\Entity\LoadBrandData;
use Doctrine\Common\DataFixtures\Purger\ORMPurger;

class BrandControllerTest extends WebTestCase {

    public function setUp() {
        $this->auth = array(
            'PHP_AUTH_USER' => 'restapi',
            'PHP_AUTH_PW' => 'secretpw',
        );

        $this->client = static::createClient(array(), $this->auth);
    }

    public function testJsonGetPageAction() {
        $fixtures = array('Minn\APIBundle\Tests\Fixtures\Entity\LoadBrandData');
        $this->loadFixtures($fixtures);
        $brands = LoadBrandData::$brands;
        $brand = array_pop($brands);

        $route = $this->getUrl('api_1_brand_get_brand', array('id' => $brand->getId(), '_format' => 'json'));

        $this->client->request('GET', $route, array('ACCEPT' => 'application/json'));
        $response = $this->client->getResponse();
        $this->assertJsonResponse($response, 200);
        $content = $response->getContent();

        $decoded = json_decode($content, true);
        $this->assertTrue(isset($decoded['id']));
    }

    // ..
}

이 테스트는 DB를 제거합니다. 그래서이 변경을 수행 하여 링크 에서 제안 된 코드를 시도했습니다 .

// removed code
$fixtures = array('Minn\APIBundle\Tests\Fixtures\Entity\LoadBrandData');
$this->loadFixtures($fixtures);

// new code
$this->runCommand('doctrine:fixtures:load --append --no-interaction --fixtures=src/Minn/APIBundle/Tests/Fixtures/Entity/LoadBrandData.php');

그러나 기능 테스트는 작동하지 않습니다.

There was 1 error:

1) Minn\APIBundle\Tests\Controller\BrandControllerTest::testJsonGetPageAction
Error: Call to a member function getId() on null

/home/amine/NetBeansProjects/minnapi/src/Minn/APIBundle/Tests/Controller/BrandControllerTest.php:27

이 변경을 수행하여 loadFixtures () 함수에서 사용할 수있는 옵션을 사용하려고했습니다 .

// removed code:
$fixtures = array('Minn\APIBundle\Tests\Fixtures\Entity\LoadBrandData');
$this->loadFixtures($fixtures);

// new code 
$fixtures = array('Minn\APIBundle\Tests\Fixtures\Entity\LoadBrandData');
$this->loadFixtures($fixtures, null,'doctrine', ORMPurger::PURGE_MODE_DELETE);

평결 : DB는 항상 기능 테스트를 실행할 때마다 제거됩니다.

그래서, 어떤 제안 ??

감사,

참고 : composer.json에 설명 된 번들 버전

    "doctrine/doctrine-fixtures-bundle": "dev-master",
    "phpunit/phpunit": "5.4.*",
    "liip/functional-test-bundle":"1.6.*",
    "guzzle/guzzle": "v3.9.*"
아민 잘 룰리

데이터베이스 제거를 방지하는 유일한 해결책은 테스트 데이터베이스를 만드는 것입니다. 이를 수행하기위한 단계는 다음과 같습니다.

테스트 데이터베이스의 구성

# the config has to be done in config_test.yml
doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                driver:   pdo_mysql
                host:     "%database_host%"
                port:     "%database_port%"
                dbname:   test
                user:     "%database_user%"
                password: "%database_password%"
                charset:  UTF8

데이터베이스 및 테이블 생성

// this command is run only once (just for creating the testing db)
$ php app/console doctrine:database:create --env=test
// this command is needed when you have new entities
$ php app/console doctrine:schema:create --env=test

테스트에서 픽스처를로드하는 방법은 무엇입니까?

    $fixtures = array('Minn\APIBundle\Tests\Fixtures\Entity\LoadBrandData');
    $this->loadFixtures($fixtures);
    $brands = LoadBrandData::$brands;

다른 사람들에게 도움이되기를 바랍니다!

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Symfony2에서 단위 및 기능 테스트를 분리하는 방법은 무엇입니까?

분류에서Dev

Jasmine에서 빈 기능을 테스트하는 방법은 무엇입니까?

분류에서Dev

Play 사양 테스트에 json 조명기 데이터를 삽입하는 방법은 무엇입니까?

분류에서Dev

Symfony2 앱에서 기존 웹 서비스를 사용하는 방법은 무엇입니까?

분류에서Dev

기능 테스트에서 Rspec 및 Capybara로 쿠키를 테스트하는 방법은 무엇입니까?

분류에서Dev

ParcelForce : Magento 2에서 웹 서비스를 테스트하기위한 테스트 자격 증명을 얻는 방법은 무엇입니까?

분류에서Dev

다른 파생 클래스의 조합에서 기능을 추가하는 방법은 무엇입니까?

분류에서Dev

자바 스크립트에서 onclick 기능을 추가하는 방법은 무엇입니까?

분류에서Dev

Codeception 기능 테스트에서 PHPUnit assert 메서드를 사용하는 방법은 무엇입니까?

분류에서Dev

"onclick"이벤트를 동일한 기능에서 .appendChild에 추가하는 방법은 무엇입니까?

분류에서Dev

process.stdin의 읽기 가능한 이벤트에 조건을 추가하는 방법은 무엇입니까?

분류에서Dev

파일 읽기 기능에 대한 단위 테스트를 수행하는 방법은 무엇입니까?

분류에서Dev

파일 읽기 기능에 대한 단위 테스트를 수행하는 방법은 무엇입니까?

분류에서Dev

테스트 기능을 외부에서 컴포넌트로 가져 오는 방법은 무엇입니까?

분류에서Dev

Bluemix DevOps 파이프 라인에 성능 테스트를 추가하는 방법은 무엇입니까?

분류에서Dev

반응에서 axios로 비동기 작업을 테스트하는 방법은 무엇입니까? - 2 부

분류에서Dev

kiwi bdd 테스트 케이스에서 didReceiveMemoryWarning 기능을 확인하는 방법은 무엇입니까?

분류에서Dev

Ansible 기능에 대한 단위 테스트 케이스를 생성하는 방법은 무엇입니까?

분류에서Dev

내 기능에 대한 테스트 케이스를 작성하는 방법은 무엇입니까? PHP

분류에서Dev

symfony2 : 현재 경로가 나뭇 가지에서 일치하는 경우 "활성"html 클래스를 추가하는 방법은 무엇입니까?

분류에서Dev

React SPA에서 커스텀 js 코드 스 니펫 기능을 추가하는 방법은 무엇입니까?

분류에서Dev

Pytest, 조명기의 값 또는 None에 대해 테스트하는 방법은 무엇입니까?

분류에서Dev

Jasmine 테스트에서 switchMap을 실행하고 rxJS 기능을 탭하는 방법은 무엇입니까?

분류에서Dev

Laravel 4에서 crud 컨트롤러에 새로운 기능을 추가하는 방법은 무엇입니까?

분류에서Dev

USB 3.0 허브에서 전원 기능을 테스트하는 방법은 무엇입니까?

분류에서Dev

.Net Framework로 작성된 Azure Data Lake의 추가 기능에 대한 단위 테스트를 수행하는 방법은 무엇입니까?

분류에서Dev

Typescript 2 : 기존 인터페이스 또는 유형에 추가하는 방법은 무엇입니까?

분류에서Dev

yii2 모델에 기능을 추가하는 방법은 무엇입니까?

분류에서Dev

자동 크기 조정이 가능한 Bokeh에 레이블 / 텍스트를 추가하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    Symfony2에서 단위 및 기능 테스트를 분리하는 방법은 무엇입니까?

  2. 2

    Jasmine에서 빈 기능을 테스트하는 방법은 무엇입니까?

  3. 3

    Play 사양 테스트에 json 조명기 데이터를 삽입하는 방법은 무엇입니까?

  4. 4

    Symfony2 앱에서 기존 웹 서비스를 사용하는 방법은 무엇입니까?

  5. 5

    기능 테스트에서 Rspec 및 Capybara로 쿠키를 테스트하는 방법은 무엇입니까?

  6. 6

    ParcelForce : Magento 2에서 웹 서비스를 테스트하기위한 테스트 자격 증명을 얻는 방법은 무엇입니까?

  7. 7

    다른 파생 클래스의 조합에서 기능을 추가하는 방법은 무엇입니까?

  8. 8

    자바 스크립트에서 onclick 기능을 추가하는 방법은 무엇입니까?

  9. 9

    Codeception 기능 테스트에서 PHPUnit assert 메서드를 사용하는 방법은 무엇입니까?

  10. 10

    "onclick"이벤트를 동일한 기능에서 .appendChild에 추가하는 방법은 무엇입니까?

  11. 11

    process.stdin의 읽기 가능한 이벤트에 조건을 추가하는 방법은 무엇입니까?

  12. 12

    파일 읽기 기능에 대한 단위 테스트를 수행하는 방법은 무엇입니까?

  13. 13

    파일 읽기 기능에 대한 단위 테스트를 수행하는 방법은 무엇입니까?

  14. 14

    테스트 기능을 외부에서 컴포넌트로 가져 오는 방법은 무엇입니까?

  15. 15

    Bluemix DevOps 파이프 라인에 성능 테스트를 추가하는 방법은 무엇입니까?

  16. 16

    반응에서 axios로 비동기 작업을 테스트하는 방법은 무엇입니까? - 2 부

  17. 17

    kiwi bdd 테스트 케이스에서 didReceiveMemoryWarning 기능을 확인하는 방법은 무엇입니까?

  18. 18

    Ansible 기능에 대한 단위 테스트 케이스를 생성하는 방법은 무엇입니까?

  19. 19

    내 기능에 대한 테스트 케이스를 작성하는 방법은 무엇입니까? PHP

  20. 20

    symfony2 : 현재 경로가 나뭇 가지에서 일치하는 경우 "활성"html 클래스를 추가하는 방법은 무엇입니까?

  21. 21

    React SPA에서 커스텀 js 코드 스 니펫 기능을 추가하는 방법은 무엇입니까?

  22. 22

    Pytest, 조명기의 값 또는 None에 대해 테스트하는 방법은 무엇입니까?

  23. 23

    Jasmine 테스트에서 switchMap을 실행하고 rxJS 기능을 탭하는 방법은 무엇입니까?

  24. 24

    Laravel 4에서 crud 컨트롤러에 새로운 기능을 추가하는 방법은 무엇입니까?

  25. 25

    USB 3.0 허브에서 전원 기능을 테스트하는 방법은 무엇입니까?

  26. 26

    .Net Framework로 작성된 Azure Data Lake의 추가 기능에 대한 단위 테스트를 수행하는 방법은 무엇입니까?

  27. 27

    Typescript 2 : 기존 인터페이스 또는 유형에 추가하는 방법은 무엇입니까?

  28. 28

    yii2 모델에 기능을 추가하는 방법은 무엇입니까?

  29. 29

    자동 크기 조정이 가능한 Bokeh에 레이블 / 텍스트를 추가하는 방법은 무엇입니까?

뜨겁다태그

보관