2014-01-09 43 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');

相关问题