Php Laravel单元测试-根据测试方法更改配置值
我有一个系统验证帐户的应用程序(注册->获取带有激活链接的电子邮件->帐户验证)。该验证流是可选的,可以使用配置值关闭:Php Laravel单元测试-根据测试方法更改配置值,php,unit-testing,laravel,phpunit,Php,Unit Testing,Laravel,Phpunit,我有一个系统验证帐户的应用程序(注册->获取带有激活链接的电子邮件->帐户验证)。该验证流是可选的,可以使用配置值关闭: // config/auth.php return [ // ... 'enable_verification' => true ]; 我想测试注册控制器: 在这两种情况下,它都应该重定向到主页 当验证打开时,主页应显示消息“已发送电子邮件” 当验证关闭时,主页应显示消息“帐户已创建” 等等 我的测试方法: public function test_Use
// config/auth.php
return [
// ...
'enable_verification' => true
];
我想测试注册控制器:
- 在这两种情况下,它都应该重定向到主页
- 当验证打开时,主页应显示消息“已发送电子邮件”
- 当验证关闭时,主页应显示消息“帐户已创建”
- 等等
public function test_UserProperlyCreated_WithVerificationDisabled()
{
$this->app['config']->set('auth.verification.enabled', false);
$this
->visit(route('frontend.auth.register.form'))
->type('Test', 'name')
->type('test@example.com', 'email')
->type('123123', 'password')
->type('123123', 'password_confirmation')
->press('Register');
$this
->seePageIs('/')
->see(trans('auth.registration.complete'));
}
public function test_UserProperlyCreated_WithVerificationEnabled()
{
$this->app['config']->set('auth.verification.enabled', true);
$this
->visit(route('frontend.auth.register.form'))
->type('Test', 'name')
->type('test@example.com', 'email')
->type('123123', 'password')
->type('123123', 'password_confirmation')
->press('Register');
$this
->seePageIs('/')
->see(trans('auth.registration.needs_verification'));
}
调试时,我注意到控制器方法内部的配置值始终设置为配置文件中的值,无论我使用$this->app['config']->set设置了什么…
我对用户存储库本身进行了其他测试,以检查它在验证打开或关闭时是否工作。在那里,测试按照预期进行
知道控制器失败的原因以及如何修复吗?如果我正确理解您的问题-您正在寻找“如何设置配置参数”,那么您可以使用
config::set($key,$value)
正确答案在上面
Config::set($key, $value)
范例
//Not forget to add namespace using class.
use Config;
//Example to set config. (configFile.key)
Config::set('auth.enable_verification', false);
如果您觉得使用助手更舒服,或者您正在使用Lumen,您也可以使用
config()->set($key,$value)
如果您使用config::set($key,$value)
,那么您需要导入illumb\Support\Facades\config
,但这在Lumen中仍然有效,正如@suarsenegger的回答一样。我相信这在Laravel的更高版本(8+)中被删除,使得配置不可变,因此这种方法可能不会继续得到支持。