У меня есть тест, чтобы проверить, работает ли мой VerificationController
.Если я тестирую его вручную, он работает, но он не работает всякий раз, когда я пытаюсь запустить его через phpunit.
Это мой VerificationController выглядит так:
class VerificationController extends Controller
{
public function verify(Request $request)
{
$user = User::where('email', $request->email)->where('verification_token', $request->token)->firstOrFail();
$user->update([
'verified' => 1,
'verification_token' => null
]);
$user->student()->update([
'status' => 1
]);
auth()->loginUsingId($user->id);
return redirect()->route('student.home')->with('flash_msg', 'Alamat E-Mail Berhasil Diverifikasi');
}
}
И это мойкласс модульного тестирования:
class RegisterStudentEmailTest extends TestCase
{
use RefreshDatabase;
/**
* A basic test example.
*
* @return void
*/
public function test_inactive_student_register()
{
Mail::fake();
Notification::fake();
$admins = factory(User::class, 3)->states('a')->create();
$this->visitRoute('register')
->type('Mary', 'firstname')
->type('Jane', 'lastname')
->type('mary@mail.org', 'email')
->type('081330956056', 'phone')
->type('Surabaya', 'address')
->select('f', 'gender')
->select('Manual', 'car_type')
->type('123456', 'password')
->type('123456', 'password_confirmation')
->press('Daftar');
$student = User::where('role', 'Student')->first();
Mail::assertSent(
VerificationMail::class,
function ($mail) use ($student) {
return $mail->student->id === $student->id;
}
);
Notification::assertSentTo(
[$admins],
InactiveStudent::class,
function ($notification, $channels) use ($student) {
return $notification->inactive_student->id === $student->id;
}
);
$this->visit('verify?token=' . $student->verification_token . '&email=mary%40mail.org')
->seeRouteIs('student.home');
}
}
Я получаю ошибку, пытаясь получить свойство 'name' не-объекта, которое находится в файле sidebar.blade.php
.Это код:
<li class="user-header">
<p>
{{ auth()->user()->name }}
<br>{{ auth()->user()->role }}
</p>
</li>
Этот URL (verify?token=' . $student->verification_token . '&email=mary%40mail.org'
) позволяет пользователю автоматически входить в систему, поэтому он автоматически отображает имя пользователя на боковой панели (я проверяю этот URL вручную, и проблем нет)