Laravel專案中寫測試,遇到怎樣都沒辦法Mock其他物件,原因可能是這個物件早就被實現了。
1 | class ComboCategoryServiceTest extends TestCase |
這個
function會呼叫findByDomainOrFail,但是在這裡執行的時候,其實他都沒有被Mock
這是因為早在
setUp早就實現ComboCategoryService:class,此建構子又實現HotelRepository::class
在這之後怎麼
Mock,instance都沒有用。
結論:要在呼叫之前就Mock,instance,或是再實現一次方法。
1 | $this->service = app()->make(ComboCategoryService::class); |