如何使用Laravel Feature测试来测试最小/最大长度

时间:2019-03-14 22:04:46

标签: laravel-5 tdd laravel-5.8

我正在尝试验证功能测试。这是我的控制器:

$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.',
    ];
}

0 个答案:

没有答案