[Laravel] 讓你的 Helper 更有彈性 (使用 facades)
在 Laravel 中,有些常使用的 class 像是: Cache 在進行單元測試的時候,因為 Cache 本身繼承 Facade 所以可以很容易地在單元測試中 mock Cache ex: Cache::shouldReceive('get') ->once() ->with('key') ->andReturn('value'); 如果像是我們自己實作的 Helper,也想要在靜態類別也可以有 mockery 的 shouldReceive 該如何實作? 官方文件有提到可以使用 Facades 舉我們自己建立的 HttpHelper 為例 1. 建立 HttpHelper class <?php namespace App\Helpers; use GuzzleHttp\Client; use GuzzleHttp\Exception\RequestException; use Illuminate\Http\Request; class HttpHelper { // ... 功能略 } 2. 建立 Provider,並且將 HttpHelper 綁定到這個 HttpServiceProvider php artisan make:provider HttpServiceProvider <?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\App; class HttpHelperServiceProvider extends ServiceProvider { public function boot() { } /** * Register the application services. * * @return void */ public function register() { App::bind('Ht