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 变量。