我有一个手动注册的事件和相关的监听器。为此,我想添加测试,所以我在文档中检查了 laravel Mocking Test
,但我没有找到任何方法来测试使用参数监听器手动注册事件。所以有人帮我怎么做吗?下面我附上了工作相关的代码。
事件正在 TeamObserver deleting
方法中调用,如下所示
class TeamObserver
{
public function deleting(Team $team)
{
event('event.team.deleting', array('team' => $team));
}
}
事件和监听器在 EventServiceProvider boot
方法中注册,如下所示
public function boot()
{
parent::boot();
Event::listen(
'event.team.deleting',
'Listeners\TeamDeletingListener'
);
}
TeamDeletingListener
如下所示
class TeamDeletingListener
{
public function handle($team)
{
\Log::info('Deleting Inventory Module');
\Log::info($team);
}
}
最佳答案
做到这一点的最简单方法是用一个模拟的替换您的监听器的真实实现。这是一个示例测试。如果您删除 event('event.team.deleting', array('team' => $team));
或传递不同的团队,它将失败。如果我没猜错,这就是您想要实现的目标。
public function testTeamDeletion()
{
// Persist team that should be deleted
$team = new Team();
$team->name = 'My Team';
$team->save();
// Mock the listener
$this->mock(
TeamDeletingListener::class,
function (MockInterface $mock) use ($team) {
// Expectation
$mock->shouldReceive('handle')
->with($team)
->once();
}
);
// Delete team
$team->delete();
}
关于php - 如何在 laravel 中为手动注册事件监听器添加测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62618059/