Laravel 8 Facades 相較于依賴注入

2021-07-16 17:35 更新

依賴注入的主要好處之一是能交換注入類的實現。在測試的時候非常有用,因為你可以注入一個 mock 或者 stub,并斷言 stub 上的各種方法。

通常,真正的靜態(tài)方法是不可能 mock 或 stub 的。但是 Facades 使用動態(tài)方法對服務容器中解析出來的對象方法的調用進行了代理,我們也可以像測試注入類實例一樣測試 Facades。比如,像下面的路由:

use Illuminate\Support\Facades\Cache;

Route::get('/cache', function () {
    return Cache::get('key');
});

我們可以帶上我們期望的參數編寫下面的測試代碼來驗證 Cache::get 方法:

use Illuminate\Support\Facades\Cache;

/**
 * 一個基礎功能的測試用例。
 *
 * @return void
 */
public function testBasicExample()
{
    Cache::shouldReceive('get')
         ->with('key')
         ->andReturn('value');

    $this->visit('/cache')
         ->see('value');
}
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號