【问题标题】:Test route dispatch测试路线调度
【发布时间】:2014-03-28 05:51:45
【问题描述】:

我有一个 API,其中包含将请求转发到另一个控制器的场景。

即:

$request = Request::create'/new/resource', 'POST');
Route::dispatch($request);

我将如何编写测试来验证此调度是否按预期进行? (我知道我不应该嘲笑“请求”门面)

即:

class MyTest extends TestCase {
    public function myTestShouldForwardRequestCorrectly()
    {
        // Once for initial request, and once for fwd request?
        // Maybe also test w/ mockery spy which resource the Request is going to?
        $m = Route::shouldReceive('dispatch')->times(2);

        .... setup test ...

        $this->call('POST', '/initial/resource', $parameters);
    }
}

【问题讨论】:

    标签: laravel laravel-4 phpunit mockery


    【解决方案1】:

    您不必模拟请求 - 只需验证它是否正在发送。调度将在控制器动作时得到验证。当你打电话时:

    $this->call("POST","/path",$params); 
    

    您正在触发充当查找表的路由收集。该集合存储所有预定义的路线。因此,您将不得不挂钩该集合,以验证您自己的调度。整个响应过程由 TTPKernelInterface 处理,就像一个堆栈 - 将响应返回给用户。要进行测试,由于依赖关系,您将不得不进行大量模拟。你可以看看核心 Laravel 测试目录。在那里,您可以找到 Taylor Otwell 如何在没有应用程序的情况下测试整个框架 - 通过模拟请求。我从那里学到了很多东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-04
      • 1970-01-01
      相关资源
      最近更新 更多