2014-02-25 85 views
0

我有一個將請求轉發到另一個控制器的場景的API。測試路線調度

即:

$request = Request::create'/new/resource', 'POST'); 
Route::dispatch($request); 

我怎麼會寫一個測試,以驗證這種調度發生,因爲我期待? (我知道我不應該嘲笑「請求」門面)

即:

class MyTest extends TestCase { 
    public function myTestShouldForwardRequestCorrectly() 
    { 
     // Once for initial request, and once for fwd request? 
     // Maybe also test w/ mockery spy which resource the Request is going to? 
     $m = Route::shouldReceive('dispatch')->times(2); 

     .... setup test ... 

     $this->call('POST', '/initial/resource', $parameters); 
    } 
} 

回答

0

你不必模擬請求 - 只是驗證它是否beeing發送。 Dispacth將根據管制員的行動予以覈實。當您撥打:

$this->call("POST","/path",$params); 

你觸發路由集合充當一個查找表。該集合正在存儲所有預定義的路線。所以你將不得不掛鉤那個集合,來驗證你自己的發送。整個響應過程ih由TTPKernelInterface處理,並且像堆棧一樣行動 - 這會向用戶返回響應。爲了測試,你將不得不做很多嘲笑,因爲依賴關係。你可以看看核心Laravel測試目錄。在那裏你可以找到Taylor Otwell如何在沒有應用的情況下測試整個框架 - 通過模擬請求。我從那裏學到了很多東西。