Laravel 8 模擬對(duì)象

2021-07-26 09:35 更新

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

use App\Service;
use Mockery;

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

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

use App\Service;

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

當(dāng)你只需要模擬對(duì)象的幾個(gè)方法時(shí),可以使用 partialMock 方法。 未被模擬的方法將在調(diào)用時(shí)正常執(zhí)行:

use App\Service;

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

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

use App\Service;

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)