我无法通过代码接收复制 ajax 调用。
例如:
$I->sendAjaxPostRequest('login/verify', array('name' => 'name', 'password' => 'password'));
$I->seeResponseIsJson();
不会引发任何错误。但另一方面,如果我执行以下操作:
$I->sendAjaxPostRequest('login/verify', array('name' => 'name', 'password' => 'password'));
$I->seeResponseIsJson();
$I->seeResponseContainsJson(['login_failed' => 1]);
//or
$I->grabDataFromJsonResponse('data.login_failed');
它给了我这个错误:
ErrorException: 传递给 Codeception\Module\REST::arrayHasArray() 的参数 2 必须是数组类型,给定 null,在 C:\xampp\htdocs\blog\laravel\vendor\codeception\codeception\src\Codeception\Module 中调用\REST.php 在第 485 行并定义
我从上面的错误中了解到的是seeResponseContainsJson 或grabDataFromJsonResponse 在内部会将响应作为第二个参数传递给arrayHasArray。但是看起来无论什么响应总是空的。
另外,如果我执行以下操作:
$I->sendAjaxPostRequest('login/verify', array('name' => 'name', 'password' => 'password'));
var_dump($I->grabResponse());
我为 var_dump() 收到了这个:
object(Codeception\Maybe)#753 (3) {
["position":protected]=>
int(0)
["val":protected]=>
NULL
["assocArray":protected]=>
NULL
}
Codeception 的其他一切都按预期工作,我正在使用 PhpBrowser。