Laravel 8 模擬對象

2021-07-26 09:35 更新

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

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 方法。 未被模擬的方法將在調(diào)用時正常執(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');
}); 
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號