在没有测试路线的情况下,在Laravel中对控制器进行单元测试的最佳方法是什么

dav*_*010 12 phpunit unit-testing laravel laravel-4

我已经阅读了很多关于使用测试控制器的文档,$this->call($destination, $parameters, 'GET');但这似乎依赖于正在设置的路由,并且知道使用权$destination.

通常这没关系,但是从路径访问控制器似乎不适合进行单元测试.我想对控制器进行单元测试,而不是路由.是否有标准的单元测试控制器方式,而不处理路由?

只需手动实例化控制器并调用该方法就够了吗?例如

$controller = new MyController;
$response = $controller->someMethod($param);
$this->assertSomething($response);
Run Code Online (Sandbox Code Playgroud)

也许控制器不应该进行单元测试(并且只进行验收测试)并且我的请求表明我的控制器太重了.

Ant*_*iro 12

您可以直接致电您的行动:

$response = $this->action('GET', 'OrdersController@show', ['id' => 1]);
Run Code Online (Sandbox Code Playgroud)


小智 5

action方法已从Laravel 5.4 测试API中删除