Как проверить минимальную / максимальную длину с помощью тестов Laravel Feature - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь проверить функциональность теста. Вот мой контроллер:

$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.',
    ];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...