gpt4 book ai didi

php - 在 Laravel 5.1 上断言验证错误

转载 作者:可可西里 更新时间:2023-10-31 23:28:19 25 4
gpt4 key购买 nike

您好,我正在尝试为不依赖于 View 的 Laravel Controller 创建一个测试。我的 Controller 类中有以下方法:

public function store(Request $request)
{
$this->validate($request,[
'name'=>'required',
'login'=>'required',
'password'=>'required'
]);
//TODO: Store to database
return redirect('usuario/nuevo');
}

然后我找到了下面的代码来测试请求是否有错误:

public function testStore()
{
$response=$this->call('GET','usuario.store');
$this->assertSessionHasErrors();
}

因为我发送的请求没有填写必填字段,所以这个测试应该通过,但是 PhpUnit 返回以下消息:

Session missing key: errors
Failed asserting that false is true.

我能让它工作的唯一方法是尝试通过如下测试“查看”响应页面上的错误消息:

public function testStore()
{
$this->visit('/usuario/nuevo')
->press('Crear')
->see('Whoops');
}

这对我不起作用有两个原因:1)测试取决于“按下”按钮并发送请求的 View (我希望在不同的测试中测试它并将这个严格保留给 Controller ) 和 2) 测试取决于要出现的 'Whoops' 字符串,这显然是不好的做法。

我找到了几个声称第一个测试代码应该有效的答案,但它根本不起作用。

最佳答案

在 session 开始时尝试并发送空参数

       $this->startSession();
$this->call('GET','usuario.store', array(
'name' => '',
'login' => '',
'password' => ''
));
$errors = session('errors');
$this->assertSessionHasErrors();
$this->assertEquals($errors->get('name')[0],""your custom error message);// only for checking exact message

关于php - 在 Laravel 5.1 上断言验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39602465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com