gre*_*ghz 4 unit-testing symfony1 symfony-1.4
我正在尝试在Symfony中为我的应用程序创建一个单元测试.
我的/config/app.yml看起来像这样:
all:
tmp_dir: "tmp"
# usps
usps_username: xxxxx
usps_password: xxxxx
usps_dir: usps
Run Code Online (Sandbox Code Playgroud)
在单元测试中,当我运行类似于:
$t->comment(sfConfig::get('app_usps_username'));
Run Code Online (Sandbox Code Playgroud)
它只会输出和空行.这是怎么回事?如何从单元测试中从app.yml访问这些值?如果我尝试从其他地方访问值,它会按预期工作.
由于它是单元测试,因此配置未初始化.如果默认加载整个框架,那么它不会是一个单元测试.
如果您依赖配置选项而不是在测试中明确设置它们:
sfConfig::set('usps_username', 'my username');
Run Code Online (Sandbox Code Playgroud)
通过功能测试,它有点不同,因为整个应用程序正在被引导,您可以轻松访问您的配置.
编辑:
如果您查看缓存目录,您将看到所有配置都是在应用程序目录下生成的(cache/frontend/test/config/config_app.yml.php).如果你把它放在main config/app.yml中,那只是所有应用程序都继承了这些值.您仍然需要在应用程序的上下文中运行脚本才能使用它们.
换句话说:它应该是可能的,但你必须初始化适当的应用程序配置而不是项目配置(所以在你的引导程序中使用frontendConfiguration而不是ProjectConfiguration).
但是,我认为保持单元测试尽可能独立于应用程序是一个好习惯.
| 归档时间: |
|
| 查看次数: |
440 次 |
| 最近记录: |