在 Laravel 应用程序中,如果不满足某些条件,我想手动失败。代码工作正常,因为工作做了它应该做的,但为了安全起见,我想写一个功能测试。
这是工作的简化版本:
class ExampleJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public function handle()
{
// Some initial logic
if (! $foo->exampleMethod()) {
event(new ExampleEvent($foo));
$this->fail();
}
// Some final logic which I expect not to be reached if the job should fail
dd('You should not get here');
}
}
这是我现在的测试:
/** @test */
public function foo()
{
Event::fake();
Bus::fake();
ExampleJob::dispatch();
Queue::after(function (ExampleJob $event) {
$this->assertTrue($event->job->hasFailed());
});
Event::assertDispatched(ExampleEvent::class);
}
测试作业是否手动失败的正确方法是什么?
我尝试了几种方法,但都没有用。
似乎在测试中,代码执行在
$this->fail()
语句之后继续并到达 dd()
语句。