加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

laravel – Codeception,无法模拟ajax行为

发布时间:2020-12-16 02:56:13 所属栏目:百科 来源:网络整理
导读:我无法通过代码复制来复制ajax调用. 例如: $I-sendAjaxPostRequest('login/verify',array('name' = 'name','password' = 'password'));$I-seeResponseIsJson(); 不会引起任何错误.但另一方面,如果我做以下事情: $I-sendAjaxPostRequest('login/verify','pa
我无法通过代码复制来复制ajax调用.

例如:

$I->sendAjaxPostRequest('login/verify',array('name' => 'name','password' => 'password'));
$I->seeResponseIsJson();

不会引起任何错误.但另一方面,如果我做以下事情:

$I->sendAjaxPostRequest('login/verify','password' => 'password'));
$I->seeResponseIsJson();
$I->seeResponseContainsJson(['login_failed' => 1]);
//or
$I->grabDataFromJsonResponse('data.login_failed');

它给了我这个错误:

ErrorException: Argument 2 passed to
CodeceptionModuleREST::arrayHasArray() must be of the type array,
null given,called in
C:xampphtdocsbloglaravelvendorcodeceptioncodeceptionsrcCodeceptionModuleREST.php
on line 485 and defined

我从上面的错误中理解的是,seeResponseContainsJson或grabDataFromJsonResponse在内部会将响应作为第二个参数传递给arrayHasArray.但看起来无论响应总是空的.

另外,如果我执行以下操作:

$I->sendAjaxPostRequest('login/verify','password' => 'password'));
var_dump($I->grabResponse());

我收到这个var_dump():

object(CodeceptionMaybe)#753 (3) {
  ["position":protected]=>
  int(0)
  ["val":protected]=>
  NULL
  ["assocArray":protected]=>
  NULL
}

使用Codeception,其他所有工作都按预期工作,我正在使用PhpBrowser.

解决方法

我确定这个答案对其他人来说没有多大用处,但我在google搜索类似的错误信息时登陆了这里:

ErrorException: Argument 2 passed to CodeceptionModuleREST::arrayHasArray() 
must be of the type array,null given

经过多次拉动之后,我发现我的控制器的一些调试输出(一个var_dump)导致返回的文档不是有效的JSON,并且使用$I-> seeResponseContainsJson()因此在内部抛出错误,因为响应不是不是有效的JSON

因此,确保控制器发送的响应是有效的JSON,并且此错误应该消失

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读