【问题标题】:How to set raw post content while testing restfull controller in zf2?在 zf2 中测试 restfull 控制器时如何设置原始帖子内容?
【发布时间】:2014-05-31 04:15:15
【问题描述】:

我有一个这样的测试方法:

public function testTaskPut()
{
    $this->dispatch('/task/67', 'put');
    $this->assertResponseStatusCode(200);
    $this->assertModuleName('Task');
    $this->assertControllerName('Task\Controller\Task');
    $this->assertControllerClass('TaskController');
    $this->assertMatchedRouteName('task');
}

现在我想设置原始帖子内容:

{"content":"example content"}

怎么做?

我可以这样做:

$request = new Request();
$request->setContent(json_encode(array(
   'content' => 'example content'
)));

但是如何在 dispatch() 中使用$request...

【问题讨论】:

    标签: php unit-testing zend-framework2 phpunit


    【解决方案1】:

    我没有对此进行测试,但是 ZF 测试控制器类已经有一个请求对象用于调度,所以你应该可以这样做:

    public function testTaskPut()
    {
        $request = $this->getRequest();
        $request->setContent(json_encode(array(
           'content' => 'example content'
        )));
    
        $this->dispatch('/task/67', 'put');
        $this->assertResponseStatusCode(200);
        $this->assertModuleName('Task');
        $this->assertControllerName('Task\Controller\Task');
        $this->assertControllerClass('TaskController');
        $this->assertMatchedRouteName('task');
    }
    

    那么当您拨打dispatch()时,您的数据应该会被使用。

    【讨论】:

    • 很遗憾,dispatch() 没有使用我的数据... :(
    猜你喜欢
    • 1970-01-01
    • 2015-03-24
    • 2010-10-19
    • 1970-01-01
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多