我正在尝试创建单元测试来测试某些特定的类.我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()
呼叫实际上位于我的真实代码中的服务提供商中.此测试用例专门用于测试该服务提供商.没有路由将从该提供程序中的方法打印返回值.