PHP单元,使用单元测试测试laravel日志消息

Jam*_*ods 1 php phpunit unit-testing laravel laravel-5

我正在使用PHPUnit为存储功能创建单元测试,该存储功能将数据存储在数据库中。

目前,我正在测试验证它是否已存储数据。

但是,我还想创建一个测试,以证明如果模型保存功能失败,则会生成laravel日志消息。

下面的代码显示了存储功能。“ log :: info”是我要测试的行。

谢谢。

public function store(Venue $venue){ 
    $saved =  $venue->save();
    if($saved == false){
        Log::info('Failed to Save Venue'. $venue);
    }
 }
Run Code Online (Sandbox Code Playgroud)

到目前为止,我通过了一个空模型,由于数据库限制,该模型将导致保存失败

public function test_venue_store_failed(){
   $venue = new Venue();
   $venueRepo = new VenueRepository();
   $this->withExceptionHandling();
   $venueRepo->store($venue);
}
Run Code Online (Sandbox Code Playgroud)

小智 7

您可以按照以下文档在单元测试中模拟Log Facade

public function test_venue_store_failed(){
    $venue = new Venue();

    Log::shouldReceive('info')
        ->with('Failed to Save Venue'. $venue);

    $venueRepo = new VenueRepository();
    $this->withExceptionHandling();
    $venueRepo->store($venue);
}
Run Code Online (Sandbox Code Playgroud)