Php 如何使用JSON正文在Codeception FunctionalTest中执行POST请求
我正在使用Yii2的Codeception。我需要使用json内容体执行POST请求。我不想使用REST模块,因为我甚至还不能配置它。(说来话长…) 我已经能够写我的GET测试了。现在有了第一次后测试,我被卡住了Php 如何使用JSON正文在Codeception FunctionalTest中执行POST请求,php,unit-testing,yii2,codeception,Php,Unit Testing,Yii2,Codeception,我正在使用Yii2的Codeception。我需要使用json内容体执行POST请求。我不想使用REST模块,因为我甚至还不能配置它。(说来话长…) 我已经能够写我的GET测试了。现在有了第一次后测试,我被卡住了 在功能测试中有一个$I->amOnPage([])方法,它只能执行GET请求 sendAjaxPost不允许使用POST发送内容正文 $I->sendPOST('api/xyz',“{\“xyz\”:1}”)也不起作用,因为Yii没有得到任何路由,所以加载了主页。该路径在调用堆栈中丢失
$I->amOnPage([])
方法,它只能执行GET请求李>
sendAjaxPost
不允许使用POST发送内容正文$I->sendPOST('api/xyz',“{\“xyz\”:1}”)
也不起作用,因为Yii没有得到任何路由,所以加载了主页。该路径在调用堆栈中丢失InnerBrowser->\u loadPage
方法,允许我以所有可配置的方式执行请求,但我找不到访问它的方法InnerBrowser
对象?
我已经尝试了
$I->getModule('PhpBrowser')->\u loadPage
或$this->getModule('Yii2')
您可以使用它,它有一个数组参数和POST值随请求一起发送。您可以更新后端代码以接受原始输入和参数,这样您就可以通过Codeception测试中的数组和api中的原始输入
$data = json_decode(file_get_contents("php://input"));
if(!$data) {
$data = (object) Yii::$app->request->post ();
$detail = (object) $data->detail;
} else {
$detail = $data->detail;
}