php – 单元测试Laravel的FormRequest
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 单元测试Laravel的FormRequest,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2049字,纯文字阅读大概需要3分钟。
内容图文
我正在尝试单元测试各种自定义FormRequest输入.我找到了解决方案:
>建议使用$this-> call(…)方法并使用期望值(link to answer)断言响应.这是过度的,因为它创建了对路由和控制器的直接依赖.
>泰勒的测试,来自Laravel Framework found in测试/ Foundation / FoundationFormRequestTest.php.那里有很多嘲弄和开销.
我正在寻找一种解决方案,我可以根据规则对各个字段输入进行单元测试(独立于同一请求中的其他字段).
SampleRequest示例:
public function rules()
{
return [
'first_name' => 'required|between:2,50|alpha',
'last_name' => 'required|between:2,50|alpha',
'email' => 'required|email|unique:users,email',
'username' => 'required|between:6,50|alpha_num|unique:users,username',
'password' => 'required|between:8,50|alpha_num|confirmed',
];
}
期望的测试:
public function testFirstNameField()
{
// assertFalse, required
// ...
// assertTrue, required
// ...
// assertFalse, between
// ...
}
public function testLastNameField()
{
// ...
}
我如何单独测试(断言)每个字段的每个验证规则?
解决方法:
我在Laracast上找到了一个很好的解决方案,并添加了一些自定义功能.
编码
public function setUp()
{
parent::setUp();
$this->rules = (new UserStoreRequest())->rules();
$this->validator = $this->app['validator'];
}
/** @test */
public function valid_first_name()
{
$this->assertTrue($this->validateField('first_name', 'jon'));
$this->assertTrue($this->validateField('first_name', 'jo'));
$this->assertFalse($this->validateField('first_name', 'j'));
$this->assertFalse($this->validateField('first_name', ''));
$this->assertFalse($this->validateField('first_name', '1'));
$this->assertFalse($this->validateField('first_name', 'jon1'));
}
protected function getFieldValidator($field, $value)
{
return $this->validator->make(
[$field => $value],
[$field => $this->rules[$field]]
);
}
protected function validateField($field, $value)
{
return $this->getFieldValidator($field, $value)->passes();
}
更新
有一个针对同一问题的e2e方法.您可以将要检查的数据POST到相关路由,然后查看响应是否包含会话错误.
$response = $this->json('POST',
'/route_in_question',
['first_name' => 'S']
);
$response->assertSessionHasErrors(['first_name');
内容总结
以上是互联网集市为您收集整理的php – 单元测试Laravel的FormRequest全部内容,希望文章能够帮你解决php – 单元测试Laravel的FormRequest所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。