我正在使用CakePHP 2.X,需要使用$this->request->data->object (or a Mock)
来测试控制器方法。我在控制器中有一个条件,用于验证$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;
}
}
要在测试中传递数据,您需要在 data
键中提供带有数据数组的 testAction
的第二个参数:
$this->testAction('/default', [
'data' => [
'some' => 'data',
],
'method' => 'post',
]);
这将构造一个在请求数据中包含['some' => 'data']
的测试请求。
有关更多信息:https://book.cakephp.org/2.0/en/development/testing.html#testing-controllers