Laravel 8 模擬對象

2021-07-26 09:35 更新

當模擬一個對象將通過 Laravel 的服務容器注入到應用中時,你將需要將模擬實例作為 instance 綁定到容器中。這將告訴容器使用對象的模擬實例,而不是構造對象的真身:

use App\Service;
use Mockery;

$this->instance(Service::class, Mockery::mock(Service::class, function ($mock) {
    $mock->shouldReceive('process')->once();
})); 

為了讓以上過程更加便捷,你可以使用 Laravel 的基本測試用例類提供 mock 方法:

use App\Service;

$this->mock(Service::class, function ($mock) {
    $mock->shouldReceive('process')->once();
}); 

當你只需要模擬對象的幾個方法時,可以使用 partialMock 方法。 未被模擬的方法將在調用時正常執(zhí)行:

use App\Service;

$this->partialMock(Service::class, function ($mock) {
    $mock->shouldReceive('process')->once();
}); 

同樣,如果你想偵查一個對象,Laravel 的基本測試用例類提供了一個便捷的 spy 方法作為 Mockery::spy 的替代方法:

use App\Service;

$this->spy(Service::class, function ($mock) {
    $mock->shouldHaveReceived('process');
}); 
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號