# Testing
We all love unit tests. It gives us that bit more confidence in what a code logic is actually doing. So it's reasonable to handle testing tracked events.
When writing tests that trigger events (this includes tests that fire app events that are indirectly tracked or model events being indirectly observed), you can fake the tracked events so they're not actually sent off to any registered channels.
Events::fake();
Now all tracked events are instead stubbed and can be unit tested.
Events::assertTrackedTimes(OrderPlaced::class, 2);
# Faking A Subset Of Events
You can fake tracked events for specific set of events using the fake or fakeFor method:
Events::fake([
OrderPlaced::class,
]);
event(new OrderPlaced($order));
Events::assertTracked(OrderPlaced::class);
# Scoped Fakes
You can use fakeFor if you only want to fake tracked events for a portion of your test:
$order = Events::fakeFor(function () {
$order = factory(Order::class)->create();
event(new OrderPlaced($order));
Events::assertTracked(OrderPlaced::class);
return $order;
});