Класс Testable
Класс Testable возвращается методом test класса Livewire
и предоставляет удобный API для тестирования компонентов.
Он содержит методы для установки свойств, вызова действий,
проверки состояния и утверждений (assertions).
Все методы возвращают экземпляр Testable для построения цепочек вызовов.
Синтаксис
<?php
use Livewire\Livewire;
$test = Livewire::test(Component::class);
?>
Пример
Давайте протестируем компонент счетчика. Создадим компонент с методом для увеличения числа:
<?php
namespace App\Livewire;
use Livewire\Component;
class Counter extends Component
{
public $num = 0;
public function inc()
{
$this->num++;
}
public function render()
{
return view('livewire.counter');
}
}
?>
<div>
<span>{{ $num }}</span>
<button wire:click="inc">+</button>
</div>
Тест для этого компонента:
<?php
namespace Tests\Unit;
use Livewire\Livewire;
use Tests\TestCase;
use App\Livewire\Counter;
class CounterTest extends TestCase
{
public function test_increment()
{
$res = Livewire::test(Counter::class)
->assertSet('num', 0)
->call('inc')
->assertSet('num', 1);
}
}
?>
Результат выполнения теста:
"OK (1 test, 2 assertions)"
Пример
Проверим, что компонент отображает правильный HTML:
<?php
namespace Tests\Unit;
use Livewire\Livewire;
use Tests\TestCase;
use App\Livewire\Counter;
class CounterTest extends TestCase
{
public function test_rendering()
{
$res = Livewire::test(Counter::class)
->assertSee('0')
->assertSee('+');
}
}
?>
Результат выполнения кода:
"OK (1 test, 2 assertions)"