我在Yii2中使用Codeception。我需要对json内容主体执行POST请求。我不想使用REST模块,因为还没有能够配置它。 (那是一个更长的故事...)
我能够出色地编写GET测试。现在,我进行了第一次POST测试。
$I->amOnPage([])
方法只能执行GET请求。 sendAjaxPost
不允许通过POST发送内容正文。$I->sendPOST('api/xyz',"{\"xyz\":1}")
也不起作用,因为Yii没有获得任何路线,因此加载了主页。路径在调用堆栈中丢失了。InnerBrowser->_loadPage
方法可以让我以所有可配置的方式进行请求,但我找不到访问它的方法。是否可以通过测试访问InnerBrowser
对象?
我已经尝试过$I->getModule('PhpBrowser')->_loadPage
或$this->getModule('Yii2')
答案 0 :(得分:0)
您可以使用I->SendAjaxPostRequest,该参数带有一个带有POST值的数组参数,以与请求一起发送。
答案 1 :(得分:0)
您可以更新后端代码以接受原始输入和参数,因此您可以在 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;
}