2013-03-17 2 views
3

parameters.yml :환경마다 Symfony2 의미 체계 구성을 덮어 쓰려면 어떻게해야합니까?

time_limit:  8 

my_ui.yml :

my_ui: 
    time_limit: %time_limit% 

config.yml : 다음 확장 및 구성 클래스를 통해 내 컨트롤러에서이 벌금을 액세스 할 수 있습니다

imports: 
    - { resource: my_ui.yml } 

내 번들에.

내 테스트 환경에서 time_limit을 어떻게 덮어 쓸 수 있습니까?

config_test.yml 파일에 다른 my_ui_test.yml을로드하려고했지만 아무 소용이 없었습니다.

답변

4

설명 : 호스트 당 하나의 매개 변수 파일이 있어야합니다. 하지만 하나의 호스트에 env마다 다른 매개 변수가 필요합니다.

parameters.yml :

parameters: 
    time_limit: 8 

my_ui.yml :

my_ui: 
    time_limit: %time_limit% 

config.yml : dev ENV 나에게 8을 제공

imports: 
    - { resource: my_ui.yml } 

.

그런 다음 parameters_test.YML :

parameters: 
    time_limit: 0 

config_test.yml :

imports: 
    - { resource: parameters_test.yml } 

test ENV 나에게 0을 제공합니다.

+1

실제로 stackoverflow에서 허용되고 권장되는 그의 질문에 대한 대답입니다. –

0

가장 좋은 방법은 테스트를 위해 자신 만의 기능 테스트 환경을 설정하는 것입니다. 이것은 prod/dev 환경에서 완전히 분리되어 있습니다.

Johann Schmidts 번들에서이 접근법에 대한 좋은 예를 연구 할 수 있습니다. 나는 나의 프로젝트를 위해서 JMSPaymentCoreBundle의 것을 복사하고 적용했다.

다른 접근법은 config_test.yml 파일에 포함 (및 prod 및 dev 설정 무시)하는 것입니다. 이 파일은 테스트 클라이언트에서만로드해야합니다.

+0

'config_test.yml'의 값을 직접 덮어 쓰려고했는데 제대로 작동하지 않았습니다. 더 설명해 주시겠습니까? – Tjorriemorrie

+0

작동하지 않는 테스트를 보여주십시오. 어떻게 실행하는지 설명하십시오. – BetaRide

+0

dev 환경과 테스트 환경을 별도로 설정하는 것은 내가 피하고자하는 것입니다. 호기심에서 벗어나 : Symfony2로 TDD를 어떻게 할 수 있습니까? – Tjorriemorrie

1

config_test.yml 파일의 매개 변수를 무시하고 기능 테스트를 실행할 때 app_test.php 컨트롤러에 요청해야합니다. 해당 컨트롤러가 존재하지 않는 경우, 변경 app_dev.php에서 복사

$kernel = new AppKernel('dev', true); 

$kernel = new AppKernel('test', true); 

예를 들면, 나는 1 ~ 2 초씩 시간에 인코딩 할 암호를 유발하는 bcrypt 암호 인코더를 사용

에 . 이것은 내가 테스트 속도를 config_test.yml에서 최소 값으로 비용을 무시하므로, 테스트 허용되지 않습니다 : 생산이 방법은 비용이 14을 것

security: 
    encoders: 
     Elnur\Model\User: 
      algorithm: bcrypt 
      cost: 4 

하지만 테스트에서 단지 4.

+0

다른 FC의 필요성을 잘 모르겠습니다. 'bin/phpunit'을 실행하면 env가'test'로 올바르게 설정됩니까? – Tjorriemorrie

+1

단위 테스트 또는 기능 테스트 중 무엇을 사용하는지에 따라 다릅니다. 테스트가 작동한다면 프론트 컨트롤러에 요청을해야하며 프론트 컨트롤러는'test' 환경을 위해 설정된'app_test.php '가 더 낫다. 단위 테스트를 수행하는 경우 환경에 전혀 신경 쓰지 않아야합니다. –

+0

@ElnurAbdurrakhimov 여기서 config_prod 내부에서 찌르지 않은 값을 설정 했습니까? 아니면 여전히 보안 상태입니까? – PeterFour

관련 문제