Я пытаюсь протестировать свое приложение для входа и выхода с помощью jwtToken. Я потерян с Laravel Контрактом и Чертой. Я прочитал много вопросов / ответов, но решения не могут работать с моим кодом. Я понимаю, что контракт не работает как черта, но он, кажется, довольно тесно связан. Я искал выход из ситуации 3 дня, но безуспешно.
У меня есть эта ошибка, поскольку я включил ActingAs в свой тест.
Не могли бы вы мне помочь, пожалуйста?
Моя модель пользователя:
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Auth\UserInterface;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Tymon\JWTAuth\Contracts\JWTSubject;
use Illuminate\Database\Eloquent\SoftDeletes;
use App\Models\Role;
use App\Models\UserAddress;
class User extends Authenticatable implements
JWTSubject,
AuthenticatableContract
{
use Notifiable;
use SoftDeletes;
use Authenticatable;
Я также пытаюсь без implements AuthenticatableContract
Я также пытаюсь без первого использования, без второго использования.
Мой TestCase:
namespace Tests;
use App\Models\Role;
use App\Models\User;
use Illuminate\Support\Facades\DB;
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
abstract class TestCase extends BaseTestCase
{
use CreatesApplication;
/**
* @var User
*/
protected $user;
public static $admin;
public static $faker;
public function setUp(): void
{
parent::setUp();
self::$faker = \Faker\Factory::create('fr_FR');
self::$admin = \App\Models\User::with('role')
->select('*')
->join('roles', 'roles.id_role', '=', 'users.id_role')
->where('slug', 'admin')
->first()->user;
Мой аккаунт Тест:
namespace Tests\Feature;
use Carbon\Carbon;
use Tests\TestCase;
use App\Models\Role;
use App\Models\User;
use Tymon\JWTAuth\JWTAuth;
use Illuminate\Auth\AuthenticationException;
use Illuminate\Contracts\Auth\Authenticatable;
[...]
public function testLogout() {
// $user = User::inRandomOrder()->firstOrFail();
// \Log::debug('user->first_name : ' . $user->first_name);
$this->actingAs(self::$admin)
->json('POST', 'api/auth/logout')
->assertStatus(200);
}```