我正在尝试使用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()
。