需要在 $this->request->data 对象中设置数据值以进行测试
Posted
技术标签:
【中文标题】需要在 $this->request->data 对象中设置数据值以进行测试【英文标题】:Need to set up data values in $this->request->data object for testing purpose 【发布时间】:2019-06-22 19:55:15 【问题描述】:我正在使用 CakePHP 2.X 并且需要使用 $this->request->data->object (or a Mock)
来测试 Controller 方法。我在控制器中有一个条件来验证是否$this->request->data is empty (if (empty($this->request->data)) EXECUTE SOMETHING)
并且我需要在测试端的这个对象中添加数据,而不是进入 if 语句。
我已经在网上寻找,但没有找到任何适合我的东西。这是控制器代码:
function default($user = null)
$subsite = $this->Session->read('subsite');
if ($subsite == "www" || $subsite == "xxx")
$this->redirect("/application/addtool");
return "ok1";
if (empty($this->request->data))
$this->render();
else
$this->request->data['Project']['actif'] = true;
$user_id = $this->Session->read('user_id');
$this->request->data['Project']['user_id'] = $user_id;
【问题讨论】:
【参考方案1】:要在测试中传递数据,您需要在 testAction
的第二个参数中提供 data
键中的数据数组:
$this->testAction('/default', [
'data' => [
'some' => 'data',
],
'method' => 'post',
]);
这将在请求数据中构造一个带有['some' => 'data']
的测试请求。
欲了解更多信息:https://book.cakephp.org/2.0/en/development/testing.html#testing-controllers
【讨论】:
感谢您的回复。这些数据会是 $this->request->data 对象中可用的数据吗? 是的,testAction
将构建一个包含该数据作为数据的请求,该请求最终将在 $this->request->data
太棒了!为了未来的用户,您能否将答案标记为已接受?哦,欢迎来到 ***!以上是关于需要在 $this->request->data 对象中设置数据值以进行测试的主要内容,如果未能解决你的问题,请参考以下文章
在tp5框架中$this->request->get('id', 100);是啥功能?
如何从 Cakephp4 中的 Helper 获取 $this->request->getAttribute('csrfToken')?