如何在ZF2 / ZF3中测试动作的输出?

时间:2017-07-31 10:54:12

标签: unit-testing zend-framework2 integration-testing zend-framework3 controller-action

如何捕获ZF2 / ZF3中控制器操作的(ViewModel)输出?

背景:

我正在为Zend Framework 3应用程序编写一些集成测试(刚刚从ZF2迁移)。我使用PHPUnit v6.2.2和Zend \ Test v3.1.0。我想测试从调用路径的那一刻到保存/检索数据的那一刻的过程部分。这意味着测试所有控制器操作的方向:

  1. 数据按预期保存(为此我想调用routes / actions并检查新的数据库状态);
  2. 按预期检索数据(为此我想调用路由/操作并检查操作的输出)。
  3. 第一个方向是明确的:在调用路由之后,我只是启动纯数据库请求并检查是否存在预期的更改。

    public function testBuzAction()
    {
        $this->dispatch('/foo/bar/buz');
        // Here might be optionally some asserts, whether the correct action is called...
        // Here are the database checks...
    }
    

    但是对于另一个方向,我们需要行动返回的ViewModel

    public function testBuzAction()
    {
        $this->dispatch('/foo/bar/buz');
        // Here might be optionally some asserts, whether the correct action is called...
        // Here is the ViewModel output of the Bar#buzAction() analyzed.
    }
    

    如何在PHPUnit测试中获得操作的输出?

1 个答案:

答案 0 :(得分:2)

public function testBuzAction()
{
    $this->dispatch('/foo/bar/buz');
    ...
    $viewModelReturnedByAction = $this->getApplication()->getMvcEvent()->getResult();
}