gpt4 book ai didi

unit-testing - Laravel 中用于路由测试的模拟中间件

转载 作者:行者123 更新时间:2023-12-05 00:56:44 25 4
gpt4 key购买 nike

我正在尝试编写一些单元测试以确保我的路由不会被意外重写。我已经找到了一个答案来检查是否为特定路由分配了正确的 Controller 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 存储的。 .

我究竟做错了什么?

最佳答案

所以我发现上面的代码有两个问题

  • 你不能链->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);

    关于unit-testing - Laravel 中用于路由测试的模拟中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35848275/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com