Я пытаюсь проверить функциональность теста. Вот мой контроллер:
$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.
Не удалось утверждать, что ложь является истиной.
Это не удастся. Я в замешательстве, поскольку я хочу двухсимвольное состояние. Любые предложения с благодарностью!
EDIT
Я также попытался добавить метод messages
в свой контроллер, чтобы вернуть именно это сообщение об ошибке, но безуспешно.
public function messages()
{
return [
'state.max' => 'The state may not be greater than 2 characters.',
];
}