gpt4 book ai didi

laravel - Codeception,无法模拟ajax行为

转载 作者:行者123 更新时间:2023-12-02 20:54:27 24 4
gpt4 key购买 nike

我无法通过代码接收复制 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: Argument 2 passed to Codeception\Module\REST::arrayHasArray() must be of the type array, null given, called in C:\xampp\htdocs\blog\laravel\vendor\codeception\codeception\src\Codeception\Module\REST.php on line 485 and defined

我从上面的错误中了解到的是,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。

最佳答案

我不确定这个答案对其他人有多大用处,但我在谷歌搜索类似的错误消息时到达这里:

ErrorException: Argument 2 passed to Codeception\Module\REST::arrayHasArray() 
must be of the type array, null given

经过一番绞尽脑汁,我发现 Controller (var_dump)的一些调试输出导致返回的文档不是有效的 JSON,并且使用 $I->seeResponseContainsJson() 是因此会在内部抛出错误,因为响应不是有效的 JSON

因此,请确保 Controller 发送的响应是有效的 JSON,这样错误就会消失

关于laravel - Codeception,无法模拟ajax行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17643145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com