我正在尝试编写一些单元测试,以确保不会意外重写我的路线。我已经找到答案,可以检查是否为特定的路由here分配了正确的控制器。
但是,我还要检查是否将正确的中间件分配给了路由。我尝试了类似的方法
$tmp = new CorsService;
$corsMiddleware = Mockery::mock('Barryvdh\Cors\HandleCors[handle]', array($tmp))
->shouldReceive('handle')->once()
->andReturnUsing(function($request, Closure $next) {
return $next($request);
});
\App::instance('Barryvdh\Cors\HandleCors', $corsMiddleware);
由于某种原因,测试没有解决这个问题。我假设这是因为中间件实例未使用
App::instance
存储。我究竟做错了什么?
最佳答案
所以我发现上面的代码有2个问题
您不能直接使用返回值->shouldReceive
链接Mockery::mock
闭包中缺少\
工作示例:
$tmp = new CorsService;
$corsMiddleware = Mockery::mock('Barryvdh\Cors\HandleCors[handle]', array($tmp));
$corsMiddleware->shouldReceive('handle')->once()
->andReturnUsing(function($request, \Closure $next) {
return $next($request);
});
\App::instance('Barryvdh\Cors\HandleCors', $corsMiddleware);