2015-01-26 12 views
0

저는 독일 출신이고 직장에서는 오래된 Symfony2 버전 (2.1)을 사용합니다. "GermanDateExtension"이라는 나뭇 가지 필터를 작성했습니다.Symfony2 - 단위 테스트에서의 로케일

public function getGermanDateFilter($date, $format) 
{ 
    setlocale(LC_TIME, 'de_DE.utf8'); 
    return strftime($format, $date); 
} 

로캘은 setlocale()을 통해 설정되며 서식이 지정된 날짜가 반환됩니다. 이 필터에 대한 단위 테스트도 작성했습니다.

public function testGermanDay() 
{ 
    $germanDate = new GermanDateExtension(); 
    $result = $germanDate->getGermanDateFilter($this->testDate, '%A'); 

    $this->assertEquals('Mittwoch', $result); 
} 

기본 로캘은 "de"(parameters.ini) 여야합니다. 코드가 내 웹 사이트에서 문제없이 작동하지만 테스트가 실패합니다.

여기에 문제가 있습니다 : 테스트를 실행하면 기본 로켈은 "en"이고 setlocale() 호출은 무시됩니다. 그래서 "Mittwoch"대신 영어 이름 "Wednesday"가 반환됩니다.

해결 방법에 대한 의견이 있으십니까?

미리 감사드립니다.

답변

0

방금 ​​문제가 발생했습니다. Windows 명령 줄을 사용하면 "de_DE.utf8"로켈을 찾을 수 없습니다. 따라서 setlocale()이 실패했습니다. 기본 로케일은 "en"입니다.

리눅스 쉘을 사용하면 모든 것이 매력처럼 작동했습니다. 로케일과 창을 사용할 때주의하십시오.

관련 문제