我有一项服务,我需要为此编写phpunit测试
此服务的方法可以接受来自JSON POST的Symfony \ Component \ HttpFoundation \ Request对象
我需要以某种方式用JSON POST模拟Request对象,以便我可以正确地测试此方法
这是Service方法的样子
namespace AppBundle\Service;
use Symfony\Component\HttpFoundation\ParameterBag;
use Symfony\Component\HttpFoundation\Request;
/**
* Class SubscriptionNotificationProcessor
* @package AppBundle\Service
*/
class SubscriptionNotificationProcessor
{
...
public function process(Request $request)
{
$parameterBag = $request->request;
$notification_type = $parameterBag->get('notification_type');
...
}
}
我的问题是,如何模拟用JSON数据填充的Request参数?
答案 0 :(得分:0)
这是Symfony\Component\HttpFoundation\Request
public function __construct(array $query = [], array $request = [], array $attributes = [], array $cookies = [], array $files = [], array $server = [], $content = null)
{
$this->initialize($query, $request, $attributes, $cookies, $files, $server, $content);
}
您可以看到$resquest
是第二个参数,您可以执行以下操作:
$request = new Request([], [json_encode([ 'foo' => 'bar'])], [], [], [], [], []);
现在您可以将对象传递给服务process($request);