Php 调用测试动作zendFrameWork的方法

Php 调用测试动作zendFrameWork的方法,php,unit-testing,zend-framework2,Php,Unit Testing,Zend Framework2,当我在要测试的控制器中调用操作时,键入以下内容之间有什么区别: dispatch('project/controller/action') 及 提前感谢。ZF2提供了一个特殊类,用于实例化动作控制器以对其进行测试。我建议您在ZF网站上阅读,这是关于单元测试的2.2文档,它比2.0文档更清晰,也不同于2.0文档,因为2.0没有Zend\Test\PHPUnit\Controller\AbstractHttpControllerTestCase这样调用控制器不会启动MVC工作流的任何分派工作。感

当我在要测试的控制器中调用操作时,键入以下内容之间有什么区别:

 dispatch('project/controller/action')


提前感谢。

ZF2提供了一个特殊类,用于实例化动作控制器以对其进行测试。我建议您在ZF网站上阅读,这是关于单元测试的2.2文档,它比2.0文档更清晰,也不同于2.0文档,因为2.0没有
Zend\Test\PHPUnit\Controller\AbstractHttpControllerTestCase

这样调用控制器不会启动MVC工作流的任何分派工作。感谢回复。我已经阅读了ZF2文档2.2,实际上我正在扩展同一个类。问题是,当我选择第二种方法时,我必须假装登录并模拟Acl,而调度一切都正常工作,我想知道这些方法中的每一种如何工作以及我应该如何在它们之间进行选择?我个人使用以下方法:我模拟用户和Acl(我使用ZfcUser和BjyAuthorize)因为当我是来宾、用户或管理员时,我需要测试一个操作,而无需连接到数据库或依赖身份验证。我模拟数据库,因为我不想从动作测试中读取/写入数据库。我还有其他的测试只针对我的模型。在全球范围内,我嘲笑所有影响环境的外部特征。我试图保持测试简单和隔离的功能,在输入好数据和坏数据的同时测试输出
 $controller = new controller();
 $controller->action();