2011-04-26 62 views
2

我正在开发我的第一个ZF项目,并且有点卡住了。我有一个名为'WebServiceController'的控制器,我有一个WebServiceController的单元测试,但是当我运行测试时,它没有正确地断言控制器。我的测试代码:Zend Framework在单元测试中没有正确处理驼式控制器

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 无法断言使用< “WebService的” 最后控制器>是 “WebService的”

它看起来像试图断言控制器是'Web服务'而不是'WebService'。任何人都可以将我指向正确的方向吗?

在此先感谢。

Ziad

p.s.我使用ZF 1.11.5

回答

11

在Zend Framework中的控制器骆驼案例名称在URL重写:在类名

WebService成为在URL web-service

这是一种正常的行为,见http://framework.zend.com/manual/1.12/en/zend.controller.basics.html

由于人类在键入链接时保持的情况下 灵敏度臭名昭著 不一致,Zend公司 框架实际上规范化路径 信息为小写。当然,这个 当然会影响你如何命名你的 控制器和动作......或者参考 他们的链接。如果您希望您的 控制器类或动作方法 名称有多个MixedCasedWords或 驼峰,你将需要 单独的这些话的URL与 无论是“ - ”或“” (尽管你可以使用 配置使用的字符)。作为 举例来说,如果你要在 FooBarController :: bazBatAction(), 你是指它的URL作为 /富酒吧/巴兹蝙蝠或/foo.bar/baz的 行动。蝙蝠。

+0

感谢您的回应Matthieu,我更改了$ params以使'web-service'成为控制器,并修复了骆驼套管,我不得不改变预期的输出,因为视图包含'WebService'硬编码。 – Ziad 2011-04-26 12:19:07