РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
257 of 274 menu

Метод dispatch

Метод dispatch класса Testable эмулирует отправку события из компонента Livewire во время тестирования. Он принимает имя события и массив параметров. Метод используется для проверки того, что компонент правильно реагирует на события, отправленные через dispatch или emit. После вызова метода можно использовать утверждения для проверки состояния компонента.

Синтаксис

$component->dispatch('eventName', $params);

Параметры

Метод принимает следующие параметры:

  • $event - имя события, которое нужно отправить;
  • $params - массив параметров, передаваемых с событием.

Пример

Давайте создадим компонент, который отправляет событие при изменении счетчика:

<?php namespace AppLivewire; use LivewireComponent; class Counter extends Component { public $num = 0; public function increment() { $this->num++; $this->dispatch('counterUpdated', $this->num); } public function render() { return view('livewire.counter'); } } ?>
<div> <button wire:click="increment">+</button> <span>{{ $num }}</span> </div>

Теперь напишем тест, который проверяет отправку события:

<?php namespace TestsFeatureLivewire; use AppLivewireCounter; use LivewireLivewire; use TestsTestCase; class CounterTest extends TestCase { public function test_increment_dispatches_event() { $component = Livewire::test(Counter::class); $component->dispatch('counterUpdated', 5); $component->assertSet('num', 5); } } ?>

Пример

Давайте проверим, что компонент правильно обрабатывает событие от другого компонента:

<?php namespace AppLivewire; use LivewireComponent; class Notification extends Component { public $message = ''; protected $listeners = ['showNotification' => 'handleNotification']; public function handleNotification($text) { $this->message = $text; } public function render() { return view('livewire.notification'); } } ?>
<div> <p>{{ $message }}</p> </div>

Тест для проверки обработки события:

<?php namespace TestsFeatureLivewire; use AppLivewireNotification; use LivewireLivewire; use TestsTestCase; class NotificationTest extends TestCase { public function test_notification_handles_event() { $component = Livewire::test(Notification::class); $component->dispatch('showNotification', ['Hello World']); $component->assertSet('message', 'Hello World'); } } ?>

Пример

Давайте проверим отправку события с несколькими параметрами:

<?php namespace AppLivewire; use LivewireComponent; class UserManager extends Component { public $userName = ''; public $userAge = 0; public function saveUser($name, $age) { $this->userName = $name; $this->userAge = $age; $this->dispatch('userSaved', [$name, $age]); } public function render() { return view('livewire.user-manager'); } } ?>
<div> <input wire:model="userName" type="text"> <input wire:model="userAge" type="number"> <button wire:click="saveUser(userName, userAge)">Save</button> </div>

Тест для проверки отправки события с несколькими параметрами:

<?php namespace TestsFeatureLivewire; use AppLivewireUserManager; use LivewireLivewire; use TestsTestCase; class UserManagerTest extends TestCase { public function test_user_saved_event_dispatched() { $component = Livewire::test(UserManager::class); $component->dispatch('userSaved', ['John', 30]); $component->assertSet('userName', 'John'); $component->assertSet('userAge', 30); } } ?>

Смотрите также

  • метод assertDispatched,
    который проверяет отправку события
  • метод assertNotDispatched,
    который проверяет отсутствие отправки события
  • метод set,
    который устанавливает значение свойства компонента
  • метод call,
    который вызывает метод компонента из теста
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить