2017-12-11 13 views
0

일부 단위 테스트를 작성 중이며, Codeception은 내 프로젝트의 실제 Symfony 클래스를 사용하지 않고 자체 내부 Symfony 클래스를 사용하기 때문에 문제가 발생했습니다. Symfony를 codeception.yml 또는 unit.suite.yml 파일의 모듈로 활성화하지 않았습니다.Codefiction이 Symfony 클래스를 오버라이드하지 못하도록하십시오.

이것은 Codeception의 디자인 결함과 같습니다. Symfony 클래스는 돌로 설정되어 있지 않지만, Codeception을 사용하면 고정되어 있기 때문에 테스트를 실행할 때 사용하는 Symfony의 버전이 반드시 일치하지는 않습니다.

코드 테스팅 테스트를 실행하는 동안 Symfony의 고유 클래스를 어떻게 사용할 수 있습니까?

답변

0

나는 phar 파일이나 글로벌 작곡가 설치를 사용하고 있다고 가정합니다.
로컬 작성자 설치와 phar 설치 또는 전역 설치 사이의 버전 충돌은 매우 일반적인 문제입니다.

로컬 합성기 종속성으로 Codeception을 설치하는 유일한 방법은 프로젝트와 동일한 버전의 Symfony를 사용하는 것입니다.

설치 : composer require --dev codecept/codecept.
실행 : ./vendor/bin/codecept run.

+0

여전히 자체 클래스 또는 Symfony 클래스를 사용합니까? Symfony 클래스를 편집해야하는데이 프로젝트는 Symfony 업데이트를받지 못합니다. –

+0

symfony/console과 같은 구성 요소를 의미합니까? 귀하의 수정 사항이 작곡가를 사용하여 설치되고 symfony 구성 요소를 드롭 인으로 대체하는 경우, 이는 또한 Codeception에서도 사용됩니다. – Naktibalda

+0

제대로 이해했다면, Composer에 Codeception을 추가하면 Symfony가 먼저로드되므로 자체 클래스가 사용됩니다. –

0

임시 해결책으로, Codeception이 자체 버전을로드하기 전에 Symfony 라이브러리를로드하는 Codeception 주변의 래퍼를 만들었습니다. 내가 Codefect 대신에 다른 스크립트를 호출해야하므로 지저분하고 분명하지는 않기 때문에이 솔루션을 좋아하지 않습니다. 그러나 작동합니다.