我正在尝试验证功能测试。这是我的控制器:
$attributes = $request->validate([
'name' => 'required',
'description' => 'required',
'address' => 'required',
'city' => 'required',
'state' => 'required|max:2',
'zip' => 'required|min:5',
]);
Location::create($attributes);
return redirect('/locations', 301);
我说state
的最大长度不能超过2个字符。
我的测试如下:
$this->withExceptionHandling();
$user = factory(User::class)->create();
$location = factory(Location::class)->raw(['state' => 'qwerty']);
$response = $this->actingAs($user)->post('/locations', $location);
$response->assertStatus(302);
$response->assertSessionHasErrors([
'state' => 'The state may not be greater than 2 characters.'
]);
该测试将通过。
但是,如果我将其更改为此:
...
$location = factory(Location::class)->raw(['state' => 'AZ']);
....
预期的状态码302,但收到301。 无法断言false为真。
它将失败。我很困惑,因为我想要一个2个字符的状态。任何建议,我们将不胜感激!
编辑
我还尝试将messages
方法添加到控制器中,以完全返回该错误消息而没有运气。
public function messages()
{
return [
'state.max' => 'The state may not be greater than 2 characters.',
];
}