W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
當(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');
});
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: