Как я могу assertDispatched () во время модульного тестирования связанных событий в laravel? - PullRequest
0 голосов
/ 28 октября 2018

Я бы хотел, чтобы мой Model :: event () отправлял CustomEvent.Например, Customer :: save () проверит, меняется ли автоматический платеж с выключенного на включенное, а затем событие (новый AutoPayActivationEvent ($ customer)).

Однако, как кажется, в моих модульных тестах я могуне утверждаю, что вторичное событие отправлено.

Вот как выглядит тест ...

/**
 * @see CustomerObserver::class
 *
 * @test
 */
public function emits_autopay_turned_off_event(){

    if(!$this->customer->automatic_payments){
        $this->customer->automatic_payments = 1;
        $this->customer->save();
    }
    $this->customer->automatic_payments = 0;

    Event::fake();
    $this->customer->save();

    // this assertion works
    Event::assertDispatched( 'eloquent.saved: '. Customer::class);
    //this assertion fails, but the event is firing.
    Event::assertDispatched(CustomerTurnedOffAutoPayEvent::class);

}

Когда я прохожу код и смотрю в диспетчере - я вижу только события модели,Может кто-нибудь помочь мне утверждать пользовательское событие?

Я не абсолютный новичок.Я могу использовать xdebug через phpunit и шаг за шагом все.Я знаю, что все события запускаются.

Еще одна вещь, я не знаю, имеет ли это значение ~ Я собрал это как пакет.Итак, регистрация Model / Observer у моего поставщика /../ ServiceProvider

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...