0

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

IE:

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

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

IE:

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);
    }
}
4

1 回答 1

0

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

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

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

于 2014-02-25T19:30:18.640 回答