相关疑难解决方法(0)

在Laravel测试用例中模拟http请求并解析路由参数

我正在尝试创建单元测试来测试某些特定的类.我app()->make()用来实例化要测试的类.实际上,不需要HTTP请求.

但是,一些经过测试的函数需要来自路由参数的信息,所以它们会调用例如request()->route()->parameter('info'),这会引发异常:

在null上调用成员函数parameter().

我玩过很多次尝试过:

request()->attributes = new \Symfony\Component\HttpFoundation\ParameterBag(['info' => 5]);  

request()->route(['info' => 5]);  

request()->initialize([], [], ['info' => 5], [], [], [], null);
Run Code Online (Sandbox Code Playgroud)

但他们都没有工作......

如何手动初始化路由器并向其提供一些路由参数?或者只是request()->route()->parameter()提供?

更新

@Loek:你不理解我.基本上,我在做:

class SomeTest extends TestCase
{
    public function test_info()
    {
        $info = request()->route()->parameter('info');
        $this->assertEquals($info, 'hello_world');
    }
}
Run Code Online (Sandbox Code Playgroud)

没有涉及"请求".该request()->route()->parameter()呼叫实际上位于我的真实代码中的服务提供商中.此测试用例专门用于测试该服务提供商.没有路由将从该提供程序中的方法打印返回值.

php phpunit unit-testing laravel laravel-5.3

10
推荐指数
2
解决办法
6818
查看次数

标签 统计

laravel ×1

laravel-5.3 ×1

php ×1

phpunit ×1

unit-testing ×1