我正在寻找一些看起来很平常但却无法在Mockery中找到内置解决方案的东西。
示例测试将是这样的:
<?php
$user = factory(App\User::class)->create(['birthday' => Carbon::now()->subYear(20)]);
$this->mailer->shouldReceive('sendBirthdayEvent')
->with(hasEntry("id", $user->id)); // Will fail if DB is seeded
$this->command->sendBirthdayEventToAllUSers();
我想检查sendBirthdayEvent
是否会调用我刚刚创建的二次使用。
问题是我无法使用with
,因为我的数据库可能会在该点播种,其他用户也可能在同一天生日。
到目前为止,我一直想到的“更聪明”的解决方案是做这样的事情:
<?php
$success = false;
$this->mailer->shouldReceive('sendBirthdayEvent')
->with(function($user_id) use($success) {
if($user_id) === $user->id {
$success = true:
}
return true;
});
assert($success,true);
但我觉得我在这里真的错过了什么。
答案 0 :(得分:1)
试试这个:
$this->mailer->shouldReceive('sendBirthdayEvent')->with($user->id)->once();