需要在$this>请求>数据对象中设置数据值以进行测试



我正在使用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

最新更新