2
我對測試世界相當陌生,我試圖圍繞嘲笑和嘲諷。我知道如何嘲笑某些被調用的類。幸運的是,Laravel使這非常簡單。
一段時間以來,我瞭解到您將您的方法(例如Controller類)劃分爲更小的塊。所以每個這樣的小方法或多或少只會做一件事,就像我聽說的那樣,測試更好。
讓我們假設我的控制器類看起來是這樣的:
class MyController extends Controller
{
public function myMethod($request)
{
$this->validateRequest($request);
$response = App\ModelClass::doSomething();
return response()->json($response)
}
protected function validateRequest($request)
{
// do some validation here
}
}
據我瞭解,單元測試是用來檢查隔離的方法和我應該在儘可能少塊地劃分代碼,使其更容易測試它們(所以一種方法只做一件事等)
是不是很好的做法,在這個例子中,測試myMethod
,並檢查它是否調用其他方法?我知道這不起作用,但我可以像這樣嘲笑它嗎?我應該這樣做嗎?
\Mockery::mock('App\Http\Controllers\MyController')
->shouldReceive('validateRequest')
->once();
謝謝,這整個事情流露出一些光=) 我現在也發現一些信息,通常應該不是單元測試laravel控制器。他們應該通過http調用,然後作爲一個整體執行。我想我只需要使用它的功能測試,並測試它作爲一個整體調用的控制器和成員函數。幸運的是,我仍然可以嘲笑像你解釋的每一個服務類。 – Chris