我正在为我们的项目实施测试用例,以包含在我们的构建脚本中。此 CakePHP 2.4 应用程序主要基于 REST,并已设置为解析其 routes.php 文件中的 json 扩展。以下是我们应用程序中典型函数的示例:
public function index() {
$this->paginate = array(
'fields' => array('User.username', 'User.first_name', 'User.last_name', 'UserGroup.name','Location.name','User.id'),
'conditions' => array(
'active'=>1
),
'link' => array('UserGroup','Location')
);
$this->set('response', $this->RestApi->getResponse());
$this->set('_serialize','response');
}
这将返回一个像这样的 json 结构:
{"sEcho":1,"iTotalRecords":16,"iTotalDisplayRecords":14,"aaData":[["admin","Administrative"],["salesman","Salesman"]]}
因此,我希望在编写测试用例时调用此 URL 时会收到 JSON 响应,并且我的测试之一是正确解码并继续验证数据。问题是,对 testAction 的调用什么也不返回(我试过告诉它返回视图和内容)。我能够访问响应的唯一方法是查看返回变量。
示例 - 不工作:
$result = $this->testAction('/users/index.json',array(
'method' => 'GET',
'return' => 'contents'
));
var_dump($result); // NULL
示例 - 正在工作:
$result = $this->testAction('/users/index.json',array(
'method' => 'GET',
'return' => 'vars'
));
那么看 vars 有什么问题呢?好吧,它比应用程序如何工作的真实示例更进一步。如果我不能让基本的单元测试按预期工作,这也让我有点担心架构。
请建议并感谢您的阅读!
编辑:我应该补充一点,即使对非休息网址执行 testAction,例如只返回 HTML 的网址,我仍然没有得到任何响应。没有HTML等...