我正在研究我的第一个ZF项目并且有点卡住了。我有一个名为'WebServiceController'的控制器,我有一个WebServiceController的单元测试,但是当我运行测试时,它没有正确地断言控制器。我的测试代码是:
public function testIndexAction() {
$params = array('action' => 'index', 'controller' => 'WebService', 'module' => 'default');
$url = $this->url($this->urlizeOptions($params));
$this->dispatch($url);
// assertions
$this->assertModule($params['module']);
$this->assertController($params['controller']);
$this->assertAction($params['action']);
$this->assertQueryContentContains(
'div#view-content p',
'View script for controller <b>' . $params['controller'] . '</b> and script/action name <b>' . $params['action'] . '</b>'
);
}
我得到的错误是:
1)WebServiceControllerTest :: testIndexAction 无效断言使用的最后一个控制器&lt;“Web-Service”&gt;是“WebService”
看起来它试图断言控制器是'Web-Service'而不是'WebService'。有人能指出我正确的方向吗?
提前致谢。
齐亚德
P.S。我使用的是ZF 1.11.5
答案 0 :(得分:11)
在Zend Framework中,控制器的驼峰案例名称在URL中重写:
类名中的 WebService
在网址中变为web-service
。
这是正常行为,请参阅http://framework.zend.com/manual/1.12/en/zend.controller.basics.html:
因为人类是众所周知的 维持案件不一致 Zend,键入链接时的敏感性 框架实际上规范了路径 信息为小写。这个 当然,会影响你的名字 控制器和动作......或参考 他们在链接。如果你想拥有 您的控制器类或操作方法 name有多个MixedCasedWords或 camelCasedWords,你需要 用网址分隔网址上的这些字词 “ - ”或“。” (尽管你可以 配置使用的字符)。作为一个 例如,如果你要去 行动 FooBarController :: bazBatAction() 你会在网址上引用它 / foo-bar / baz-bat或/foo.bar/baz.bat。