Zend Framework没有在单元测试中正确处理骆驼案例控制器

时间:2011-04-26 11:41:06

标签: unit-testing zend-framework

我正在研究我的第一个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

1 个答案:

答案 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。