相关疑难解决方法(0)

如何在Laravel 5中测试表单请求规则?

我创建了一个表单请求类并定义了一堆规则.现在我想测试这些规则,看看行为是否符合我们的期望.

我怎么能写一个测试来完成它?

非常感谢你的答案!

更新:更确切地说,我想编写一个单元测试,检查例如格式错误的电子邮件是否通过验证.问题是我不知道如何用假输入创建一个新的Request实例.

forms testing unit-testing request laravel

10
推荐指数
2
解决办法
6660
查看次数

如何在laravel 5中使用php单元测试验证错误

如何在验证错误中抛出的php单元中测试特定的验证错误?使用以下代码,我们可以检查会话是否有错误,但不是确切的错误

$this->assertSessionHasErrors();
Run Code Online (Sandbox Code Playgroud)

php tdd phpunit unit-testing laravel-5

5
推荐指数
3
解决办法
7059
查看次数

Laravel PHPUnit模拟请求

我在控制器上执行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)

php phpunit unit-testing laravel laravel-5

4
推荐指数
3
解决办法
8926
查看次数

如何在Laravel中使用form-request时检查验证是否失败?

我正在尝试为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)

php laravel laravel-5 laravel-5.4 laravel-5.5

1
推荐指数
1
解决办法
8474
查看次数