2015-01-26 7 views
0

Я из Германии и на работе мы используем старую версию Symfony2 (2.1). Я написал фильтр ветви с названием «GermanDateExtension».Symfony2 - Местность в модульных тестах

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

Locale устанавливается через setlocale(), и отформатированная дата будет возвращена. Я также написал некоторые модульные тесты для этого фильтра.

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

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

Стандарт по умолчанию должен быть «de» (в параметрах.ini). Код работает без проблем на моем веб-сайте, но тесты терпят неудачу.

Теперь вот в чем проблема: Если я выполняю тест, то по умолчанию локаль «en» и вызов setlocale() игнорируется. Поэтому вместо «Mittwoch» возвращается английское название «среда».

У вас есть идеи, как это исправить?

Заранее благодарен!

ответ

0

Я только что нашел проблему самостоятельно. С помощью командной строки Windows локаль «de_DE.utf8» не найден. Таким образом, setlocale() не удался, стандартная локаль была «en».

Использование оболочки Linux все работало как шарм. Поэтому будьте осторожны при использовании локалей и окон ...

Смежные вопросы