我已经阅读了很多关于使用$this->call($destination, $parameters, 'GET');
测试控制器的文档,但这似乎依赖于正在设置的路由,并且知道要使用的$destination
。
通常这没关系,但是从路线访问控制器似乎不适合进行单元测试。我想对控制器进行单元测试,而不是路由。有没有标准的单元测试控制器的方法,而不处理路由?
只需手动实例化控制器并调用足够的方法吗? E.g。
$controller = new MyController;
$response = $controller->someMethod($param);
$this->assertSomething($response);
也许控制器不应该进行单元测试(并且只进行验收测试)并且我的请求表明我的控制器太重了。
答案 0 :(得分:12)
您可以直接致电:
$response = $this->action('GET', 'OrdersController@show', ['id' => 1]);
答案 1 :(得分:5)
已从Laravel 5.4 testing api
中移除action
方法
答案 2 :(得分:0)
在laravel 6中,可以直接按以下方式调用任何控制器方法:
app()->call('App\Http\Controllers\TestController@testMethod', [$param1, $param2]);
就是这样。