symfony 的 PHPUnit Mock RequestStack
PHPUnit Mock RequestStack of symfony
我不明白这是怎么模拟的:$requestStack->getCurrentRequest()->getContent()
有 2 种方法:getCurrentRequest()->getContent()
和它 return 一个 json 对象(POST 响应)
我使用 symfony RequestStack
class。
整个代码为
class MessageReceivedService
{
protected $message;
public function __construct(RequestStack $requestStack)
{
$this->message = json_decode($requestStack->getCurrentRequest()->getContent());
}
public function getMessage()
{
return $this->message;
}
}
您实际上不必模拟 RequestStack
class,因为它基本上是一个容器。
如果您想使用 RequestStack
进行测试,您可以这样做:
<?php
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
class MessageReceivedServiceTest extends \PHPUnit_Framework_TestCase
{
public function test()
{
$request = new Request([], [], [], [], [], [], [], json_encode([
'foo' => 'bar'
]));
$requestStack = new RequestStack();
$requestStack->push($request);
// Do your tests
}
}
当您在 $requestStack
变量上调用 currentRequest
时,它应该 return $request
变量。
我不明白这是怎么模拟的:$requestStack->getCurrentRequest()->getContent()
有 2 种方法:getCurrentRequest()->getContent()
和它 return 一个 json 对象(POST 响应)
我使用 symfony RequestStack
class。
整个代码为
class MessageReceivedService
{
protected $message;
public function __construct(RequestStack $requestStack)
{
$this->message = json_decode($requestStack->getCurrentRequest()->getContent());
}
public function getMessage()
{
return $this->message;
}
}
您实际上不必模拟 RequestStack
class,因为它基本上是一个容器。
如果您想使用 RequestStack
进行测试,您可以这样做:
<?php
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
class MessageReceivedServiceTest extends \PHPUnit_Framework_TestCase
{
public function test()
{
$request = new Request([], [], [], [], [], [], [], json_encode([
'foo' => 'bar'
]));
$requestStack = new RequestStack();
$requestStack->push($request);
// Do your tests
}
}
当您在 $requestStack
变量上调用 currentRequest
时,它应该 return $request
变量。