我创建了一个表单请求类并定义了一堆规则.现在我想测试这些规则,看看行为是否符合我们的期望.
我怎么能写一个测试来完成它?
非常感谢你的答案!
更新:更确切地说,我想编写一个单元测试,检查例如格式错误的电子邮件是否通过验证.问题是我不知道如何用假输入创建一个新的Request实例.
如何在验证错误中抛出的php单元中测试特定的验证错误?使用以下代码,我们可以检查会话是否有错误,但不是确切的错误
$this->assertSessionHasErrors();
Run Code Online (Sandbox Code Playgroud) 我在控制器上执行PHPUnit,似乎无法嘲笑Request权限。
这是控制器:
use Illuminate\Http\Request;
public function insert(Request $request)
{
// ... some codes here
if ($request->has('username')) {
$userEmail = $request->get('username');
} else if ($request->has('email')) {
$userEmail = $request->get('email');
}
// ... some codes here
}
Run Code Online (Sandbox Code Playgroud)
然后在单元测试中,
public function testIndex()
{
// ... some codes here
$requestParams = [
'username' => 'test',
'email' => 'test@test.com'
];
$request = $this->getMockBuilder('Illuminate\Http\Request')
->disableOriginalConstructor()
->setMethods(['getMethod', 'retrieveItem', 'getRealMethod', 'all', 'getInputSource', 'get', 'has'])
->getMock();
$request->expects($this->any())
->method('get')
->willReturn($requestParams);
$request->expects($this->any())
->method('has')
->willReturn($requestParams);
$request->expects($this->any())
->method('all')
->willReturn($requestParams);
// ... some codes …Run Code Online (Sandbox Code Playgroud) 我正在尝试为API编写CRUD.但是,当验证失败时,我想要返回json基于错误的响应,而不是将用户重定向到主页.
我可以使用以下代码执行此操作
public function store(Request $request)
{
try {
$validator = $this->getValidator($request);
if ($validator->fails()) {
return $this->errorResponse($validator->errors()->all());
}
$asset = Asset::create($request->all());
return $this->successResponse(
'Asset was successfully added!',
$this->transform($asset)
);
} catch (Exception $exception) {
return $this->errorResponse('Unexpected error occurred while trying to process your request!');
}
}
/**
* Gets a new validator instance with the defined rules.
*
* @param Illuminate\Http\Request $request
*
* @return Illuminate\Support\Facades\Validator
*/
protected function getValidator(Request $request)
{
$rules = [
'name' => 'required|string|min:1|max:255', …Run Code Online (Sandbox Code Playgroud) laravel ×3
laravel-5 ×3
php ×3
unit-testing ×3
phpunit ×2
forms ×1
laravel-5.4 ×1
laravel-5.5 ×1
request ×1
tdd ×1
testing ×1