我有一个使用 Lumen 5.3 构建的 API。对于身份验证,我使用 Laravel Passport(通过dusterio/lumen-passport包移植到 Lumen)。
一切都在 Postman 中运行良好,并且所有测试都可以通过一个请求顺利通过。但是,一旦我进行了具有多个请求的测试,我就会收到错误消息:“未定义身份验证驱动程序 [api]”。守卫是在我的身份验证配置中定义的,正如我所说,在这个测试用例之外工作得很好。
示例测试:
public function it_requires_users_password_when_updating_email(ApiTester $I)
{
$I->wantTo('Require password when updating email');
$user = factory(\App\User::class)->create();
$I->sendPOST('oauth/token', [
'grant_type' => 'password',
'client_id' => 1,
'client_secret' => env('OAUTH_SECRET'),
'username' => $user->email,
'password' => 'password',
'scope' => ''
]);
$token = $I->grabDataFromResponseByJsonPath('$.access_token')[0];
$I->amBearerAuthenticated($token);
$I->sendPUT('users/' . $user->id, ['email' => 'bender.rodriguez@planetexpress.com']);
$I->seeResponseCodeIs(422);
$I->seeRecord('users', array_only($user->toArray(), ['id', 'email']));
$I->dontSeeRecord('users', ['id' => $user->id, 'email' => 'bender.rodriguez@planetexpress.com']);
$I->sendPUT('users/' . $user->id, ['email' => 'bender.rodriguez@planetexpress.com', 'password' => 'password']);
$I->seeResponseCodeIs(200);
$I->seeRecord('users', ['id' => $user->id, 'email' => 'bender.rodriguez@planetexpress.com']);
}
如果我删除最后 3 行(来自第 2 个 sendPUT 请求的所有内容),则测试通过,但是一旦包含,我就会收到错误。
有任何想法吗?