Symfony2 - 单元测试中的语言环境

Symfony2 - Locale in unit tests

我来自德国,在工作中我们使用旧的 Symfony2 版本 (2.1)。 我写了一个名为 "GermanDateExtension".

的树枝过滤器
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() 调用被忽略。因此返回的是英文名称 "Wednesday" 而不是 "Mittwoch"。

你有什么办法解决这个问题吗?

提前致谢!

我自己才发现问题。 使用 windows 命令行,找不到区域设置 "de_DE.utf8"。所以 setlocale() 失败了,默认的语言环境是 "en".

使用 linux shell 一切都很顺利。所以在使用语言环境和 windows...

时要小心