Тест от пользователя в Livewire
Давайте теперь посмотрим на стол поста, где в шаблоне виден номер вошедшего человека. Без входа компонент получает пустое значение, а тест по умолчанию никого не авторизует.
Метод actingAs у базового
теста подставляет пользователя
в сессию перед запуском
компонента. Дальше функция
auth в коде компонента
видит того же человека,
что и на живой странице.
Давайте создадим компонент
PostDesk, который
читает номер из auth:
php artisan make:livewire PostDesk --class
php artisan make:test PostDeskTest
<?php
namespace App\Livewire;
use Livewire\Component;
class PostDesk extends Component
{
public function render()
{
$userId = auth()->id();
return view(
'livewire.post-desk',
compact('userId')
);
}
}
?>
Давайте выведем номер в шаблоне:
<div>{{ $userId }}</div>
Давайте в тесте создадим пользователя, войдём от его имени и проверим текст на странице:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Livewire\PostDesk;
use Livewire\Livewire;
class PostDeskTest extends TestCase
{
public function test_desk_shows_user_id(): void
{
$user = new \App\Models\User;
$user->id = 1;
$this->actingAs($user);
Livewire::test(PostDesk::class)
->assertSee('1');
}
}
?>
Создайте компонент
EmployeeDesk и тест
EmployeeDeskTest.
Тест видит номер вошедшего
работника.