Php 预期JSON POST的API终结点的Yi2 Codeception测试
有没有人有在Yi2中使用Codeception测试来测试需要JSON请求的API端点的经验 现在,我只希望对200响应代码和JSON主体进行基本检查 目前,我的测试因“[PHPUnit\u Framework\u ExceptionWrapper]错误请求”而中断 编辑Php 预期JSON POST的API终结点的Yi2 Codeception测试,php,yii2,codeception,Php,Yii2,Codeception,有没有人有在Yi2中使用Codeception测试来测试需要JSON请求的API端点的经验 现在,我只希望对200响应代码和JSON主体进行基本检查 目前,我的测试因“[PHPUnit\u Framework\u ExceptionWrapper]错误请求”而中断 编辑 原来这个“错误请求”错误是由我自己的代码引发的,因为$request->getRawBody()是空的。也就是说,我在sendPOST()调用中设置的参数没有进入Yii请求对象。如果他们不在场,请求注定会失败。 /编辑 编辑2
原来这个“错误请求”错误是由我自己的代码引发的,因为$request->getRawBody()是空的。也就是说,我在sendPOST()调用中设置的参数没有进入Yii请求对象。如果他们不在场,请求注定会失败。
/编辑 编辑2
从测试中删除标题(根据注释),它就会工作。
/编辑2 我正在尝试使用Codeception REST模块的sendPOST()方法 我不确定Codeception\Lib\Connector\Yii2.php是否正确地将我的参数数据从BrowserKit请求映射到相应的Yii请求。也就是说,进入doRequest()的请求有我的数据,但同一函数中稍后的$app->getRequest()缺少数据 这是我的测试:
$I = new FunctionalTester($scenario);
$I->haveHttpHeader('Content-Type', 'application/json'); //remove
$I->haveHttpHeader('Accept', 'application/json'); //remove
$I->sendPost(
'/index-test.php/api/v1/poi/bbox',
[
'bbox' => [
'minLat' => 51.53667954545721,
'minLng' => -0.14273375272750854,
'maxLat' => 51.53749870786214,
'maxLng' => -0.13856828212738037
]
]
);
$I->seeResponseCodeIs(200);
$I->seeResponseIsJson();
下面是一个工作请求的CURL表示:
curl \
--request POST \
--header "Accept: application/json" \
--header "Content-Type: application/json; charset=UTF-8" \
--data '{ "bbox": {"minLng": -0.152573, "minLat": 51.529012, "maxLng": -0.124691, "maxLat": 51.54104} }' \
<endpoint>
curl\
--请帖\
--标题“接受:应用程序/json”\
--标题“内容类型:application/json;字符集=UTF-8”\
--数据{“bbox”:{“minLng”:-0.152573,“minLat”:51.529012,“maxLng”:-0.124691,“maxLat”:51.54104}\
我在早期有没有做错什么?或者,我是不是走错了路?也许有更好的方法发送这样的JSON POST请求?您是否尝试过使用
--debug
标志运行codecept run functional
?这将显示发送的内容和标题。我认为您使用REST模块进行CodeCeption是理所当然的。谢谢您的建议。我正在使用debug标志进行codecept-它向我显示了“[PHPUnit_Framework_ExceptionWrapper]错误请求”。我有一些与此相关的附加信息,我将在我的原始帖子中添加这些信息。