【发布时间】:2015-11-21 19:24:45
【问题描述】:
我正在尝试使用Mockery 和PHPUnit 来测试在执行某些代码时是否会调用给定类的一个方法或另一个方法。
这正是我想要做的(我正在使用 Laravel 5):
// Test an email is sent to new user
// upon account creation.
public function testEmailSentOnNewUserCreation()
{
// Mail can be sent right on ...
Mail::shouldReceive('send')->once(); //...OR...
// ... it can be queued for later.
Mail::shouldReceive('queue')->once();
// I'm ignoring parameters and returning values here
// for sake of brevity.
$u = new User;
$u->name = 'Jon Doe';
$u->email = 'jon@doe.com';
$u->save();
}
所以,我的问题是关于如何实现 OR 部分,如果可能的话。 我还搜索了一些可能有用的 PHPUnit 注释,但我找不到任何东西。
【问题讨论】:
-
单元测试的范例之一是您应该控制流程。您应该测试分别调用发送和队列的情况。我想它取决于另一个对象或依赖项。嘲笑那个。
-
@gontrollez 同意 - 单元测试应该一次测试一个结果/行为。
-
嗨@gontrollez!您能否将您的评论重新发布为答案,以便我将其标记为解决方案?
标签: php laravel-5 phpunit tdd mockery