如何在 ZF2/ZF3 中测试动作的输出?
How to test an action's output in ZF2/ZF3?
如何在 ZF2/ZF3 中捕获控制器动作的 (ViewModel
) 输出?
背景:
我正在为 Zend Framework 3 应用程序(刚刚从 ZF2 迁移)编写一些集成测试。我正在使用 PHPUnit v6.2.2
和 Zend\Test v3.1.0
。我想测试从调用路由的那一刻到数据为 saved/retrieved 的那一刻的过程的一部分。这意味着测试所有控制器动作的方向:
- 数据按预期保存(为此我想调用 routes/actions 然后检查新的数据库状态);
- 数据按预期检索(为此我想调用 routes/actions 然后检查操作的输出)。
第一个方向很明确:调用路由后,我只需启动普通数据库请求并检查是否存在预期的更改。
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 测试中获取操作的输出?
public function testBuzAction()
{
$this->dispatch('/foo/bar/buz');
...
$viewModelReturnedByAction = $this->getApplication()->getMvcEvent()->getResult();
}
如何在 ZF2/ZF3 中捕获控制器动作的 (ViewModel
) 输出?
背景:
我正在为 Zend Framework 3 应用程序(刚刚从 ZF2 迁移)编写一些集成测试。我正在使用 PHPUnit v6.2.2
和 Zend\Test v3.1.0
。我想测试从调用路由的那一刻到数据为 saved/retrieved 的那一刻的过程的一部分。这意味着测试所有控制器动作的方向:
- 数据按预期保存(为此我想调用 routes/actions 然后检查新的数据库状态);
- 数据按预期检索(为此我想调用 routes/actions 然后检查操作的输出)。
第一个方向很明确:调用路由后,我只需启动普通数据库请求并检查是否存在预期的更改。
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 测试中获取操作的输出?
public function testBuzAction()
{
$this->dispatch('/foo/bar/buz');
...
$viewModelReturnedByAction = $this->getApplication()->getMvcEvent()->getResult();
}