Symfony2 - 单元测试中的区域设置

时间:2015-01-26 11:03:54

标签: unit-testing locale symfony-2.1

我来自德国,在工作中我们使用旧的Symfony2版本(2.1)。 我写了一个名为“GermanDateExtension”的枝条过滤器。

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

通过setlocale()设置Locale,并返回格式化日期。 我还为这个过滤器编写了一些单元测试。

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

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

默认语言环境应为“d​​e”(在parameters.ini中)。 代码在我的网站上没有问题,但是测试失败了。

现在问题在于: 如果我执行测试,则默认语言环境为“en”,并忽略setlocale()调用。因此,不是“Mittwoch”,而是返回英文名称“Wednesday”。

您有任何想法如何解决这个问题吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

我自己刚刚发现了这个问题。 使用windows命令行,语言环境" de_DE.utf8"无法找到。因此setlocale()失败,默认语言环境为" en"。

使用linux shell,一切都像魅力一样。因此在使用区域设置和窗口时要小心......