使用Laravel 8测试表单请求



我正在尝试使用Laravel测试各种API端点,但不断返回302个重定向。

class RegisterController extends Controller
{
public function register(RegisterRequest $request) {

}
}
class RegisterRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return !request()->user();
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'username'  =>  'required|min:3',
'password'  =>  'required|min:6|confirmed',
'password_confirmation' =>  'required|min:6'
];
}
}

还有我的测试用例


class RegisterTest extends TestCase
{
public function testRegisterFailsWithNoFields()
{
$res = $this->post('/api/register');
$res->assertStatus(422);
}
}

这很简单,我期待着返回错误的响应,但却遇到了302重定向,它将我发送回/这对API来说不太好。我有什么东西不见了吗?

太接近了,这是对测试请求的一个小错误/误解。

$this->post()发送一个没有Accept头的常规ol'POST请求,因此您得到了302响应,因为Laravel正试图将您重定向回会话中的错误。

请改用$this->postJson()

最新更新