2014-01-09 85 views
2

單元測試訪問我的控制器的動作我已經建立了我的路線這樣:爲什麼不Laravel

Route::controller('clients', 'Controllers\ClientsController');

通過這種方法,我可以很容易地通過後訪問所有的控制器功能而得到的。但我無法輕易測試它們。

public function testCantDeleteOtherAccountsClient() 
{ 

    Route::enableFilters(); 

    $user = Models\User::find(1); 

    $this->be($user); 

    $response = $this->action('GET', '[email protected]'); 

    $this->assertRedirectedToAction('[email protected]'); 

} 

消息

在此測試結果InvalidArgumentException:路線[ClientsController @ getDelete]未被定義。

雖然可以通過網址訪問該方法。我錯過了什麼?

回答

2

剛剛嘗試過我自己(通過控制器指定的路線),您的問題是使用action需要命名路線。據我所知,控制器路由目前不支持這個功能。

如果你創建一個測試路線:

Route::get('test', array(
    'as' => 'testName', 
    'uses' => '[email protected]' 
)); 

並嘗試

$this->action('GET', 'testName'); 

測試應該通過,你可以通過php artisan routes與名稱查看所有的路由。

您可能想使用$this->client->request()代替。您可以檢查是否重定向與發生:

$this->assertRedirectedTo("some\url"); 

注意$this->call()只是一個別名$this->client->request()

0

我發現改變其使用電話的作用,而不是爲我工作:

$response = $this->call('GET', 'clients/delete/1');

相關問題