需要在$ this-> request-> data对象中设置数据值以进行测试

时间:2019-01-29 16:14:30

标签: php cakephp phpunit

我正在使用 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 个答案:

答案 0 :(得分:0)

要在测试中传递数据,请在testAction键中为data的第二个参数提供数据数组:

$this->testAction('/default', [
    'data' => [
        'some' => 'data',
    ],
    'method' => 'post',
]);

这将使用请求数据中的['some' => 'data']构建一个测试请求。

有关更多信息:https://book.cakephp.org/2.0/en/development/testing.html#testing-controllers