在单元测试Symfony2中获取$ _GET参数

时间:2014-12-19 11:56:49

标签: php unit-testing symfony testing phpunit

我是测试的新手。我想测试我的服务和功能,但这会得到$ _GET参数。我如何在测试中模拟get参数?

1 个答案:

答案 0 :(得分:4)

使用Symfony2时,应该直接使用PHP超级全局代码来抽象代码。而是将Request对象传递给您的服务:

use Symfony\Component\HttpFoundation\Request;

class MyService
{
    public function doSomething(Request $request)
    {
        $foo = $request->query->get('foo');
        // ...
    }
}

然后,在您的单元测试中,执行以下操作:

use Symfony\Component\HttpFoundation\Request;

class MyServiceTest
{
    public function testSomething()
    {
        $service = new MyService();
        $request = new Request(array('foo' => 'bar'));
        $service->doSomething($request);
        // ...
    }
}

您还可以考虑使您的服务更通用,并在调用方法时传递您想要的值:

class MyService
{
    public function doSomething($foo)
    {
        // ...
    }
}

$service = new MyService();
$service->doSomething($request->query->get('foo');