Symfony Unit Test不会加载app_ globals

时间:2010-10-20 17:35:27

标签: unit-testing symfony1 symfony-1.4

我正在尝试在Symfony中为我的应用程序创建一个单元测试。

我的/config/app.yml看起来像这样:

all:
  tmp_dir: "tmp"

  # usps
  usps_username: xxxxx
  usps_password: xxxxx
  usps_dir: usps

在单元测试中,当我运行类似的东西时:

$t->comment(sfConfig::get('app_usps_username'));

它只会输出并清空。这是怎么回事?如何从单元测试中从app.yml访问这些值?如果我尝试从其他地方访问这些值,它会按预期工作。

1 个答案:

答案 0 :(得分:5)

由于它是单元测试,因此未初始化配置。如果默认加载整个框架,它就不是真正的单元测试。

如果您依赖配置选项而不是在测试中明确设置它们:

sfConfig::set('usps_username', 'my username');

通过功能测试,它有点不同,因为整个应用程序正在被引导,您可以轻松访问您的配置。

编辑:

如果您查看缓存目录,您会看到所有配置都是在应用程序目录下生成的(cache / frontend / test / config / config_app.yml.php)。如果你把它放在main config / app.yml中,那只是所有应用程序都继承了这些值。您仍然需要在应用程序的上下文中运行脚本才能使用它们。

换句话说:它应该是可能的,但你必须初始化适当的应用程序配置而不是项目配置(所以在你的引导程序中使用frontendConfiguration而不是ProjectConfiguration)。

但是,我认为保持单元测试尽可能独立于应用程序是一个好习惯。