Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
控制器中的YII2模拟web请求类_Yii2_Mocking_Phpunit_Yii2 Basic App - Fatal编程技术网

控制器中的YII2模拟web请求类

控制器中的YII2模拟web请求类,yii2,mocking,phpunit,yii2-basic-app,Yii2,Mocking,Phpunit,Yii2 Basic App,在我的yii2控制器中,我运行以下命令: $address = \Yii::$app->request->post('address'); 如何在PHPUnit中模拟此请求?我已尝试使用mockry,但无法理解如何模拟\Yii::$app部分?要模拟Yii2中的请求,请尝试以下操作 use yii\web\Request; use Codeception\Stub; private function mockRequest($attributes){ // mock a

在我的yii2控制器中,我运行以下命令:

$address = \Yii::$app->request->post('address');

如何在PHPUnit中模拟此请求?我已尝试使用mockry,但无法理解如何模拟\Yii::$app部分?

要模拟Yii2中的请求,请尝试以下操作

use yii\web\Request;
use Codeception\Stub;

private function  mockRequest($attributes){
    // mock a request
    $_SERVER['REQUEST_URI'] = 'http://localhost';
    $_SERVER['REMOTE_ADDR'] = '127.0.0.1';
    \Yii::$app->requestedAction = new Action('fake', $this->model);
    \Yii::$app->setHomeUrl('http://localhost');
    return Stub::make(Request::class, [
        'getUserIP' =>'127.0.0.1',
        'enableCookieValidation' => false,
        'getUserAgent' => 'Dummy User Agent',
        'getBodyParams' => [
            'MyModel' => $attributes
        ],
    ]);
}

然后呢?这只是从某处复制粘贴。你所说的“然后是什么”是什么意思?然后,您可以对模拟请求执行任何需要执行的操作。由于我们讨论的是测试,我怀疑有人会想要断言请求的结果。但这不是问题,不是吗?一切都是某物的复制品(如手册等)。这只是一个创建请求模拟的示例,就像问题一样。让我知道你需要什么帮助!