Laravel 运行测试时未触发函数
我是拉雷维尔的新手,所以我对自己正在做的事情只有一个模糊的概念。我正在做一个特性测试,我知道当我使用postman测试api时会触发一个函数,但在测试期间不会触发。这是测试Laravel 运行测试时未触发函数,laravel,testing,Laravel,Testing,我是拉雷维尔的新手,所以我对自己正在做的事情只有一个模糊的概念。我正在做一个特性测试,我知道当我使用postman测试api时会触发一个函数,但在测试期间不会触发。这是测试 public function testVerify(){ $this->createTestUserParams(); $response = $this->post(route('register'), $this->user_params); $resp
public function testVerify(){
$this->createTestUserParams();
$response = $this->post(route('register'), $this->user_params);
$response->assertOk();
$user = User::where('email','test@gmail.com')->first();
if($user){
$token = $user->verifyUser->token;
$id = $user->verifyUser->user_id;
$response2 = $this->post(route('email.customVerify'), ['user_id' => $id, 'token' => $token]);
$response2->assertOk();
//$user->markEmailAsVerified();
$this->assertNotNull($user->email_verified_at);
}else{
$this->fail('should find a user');
}
}
这是路由控制器指向的函数的代码
public function customVerify(Request $request){
if(!isset($request->user_id)){
return response()->json(['message' => 'No user ID'],400);
}
if(!isset($request->token)){
return response()->json(['message' => 'No user token'],400);
}
$user = User::where('id',$request->user_id)->first();
if($user == null){
return response()->json(['message' => 'Bad User Id'],400);
}
if ($user->hasVerifiedEmail()) {
return response()->json(['message' => 'Already verified'],400);
}
if($request->token == $user->verifyUser->token){
if($user->markEmailAsVerified()){
event(new Verified($user));
VerifyUser::where('user_id',$user->verifyUser->user_id)->first()->delete();
return response()->json(['message' => 'Everything is swell'],200);
}
}else{
return response()->json(['message' => 'Bad token'],400);
}
}
我的问题是,字段email\u verified\u at在不应该返回空值时返回空值
奇怪的是有一个$response->assertOk();只有当markEmailAsVerified()函数成功启动时,响应才会正常,否则响应将不是代码200。markEmailAsVerified()函数正在做它应该做的事情,因为当我在注释掉它的测试中自己调用它时,测试会很好地返回
如果有帮助的话,我正在使用passport库进行身份验证 是否尝试获取用户的新实例
$user = $user->fresh();
$this->assertNotNull($user->email_verified_at);
谢谢,成功了。我不知道雄辩的模型会像那样失去同步。@MichaelRomero在收到满意的答案时,将答案标记为“已回答”。