我無法通過代碼複製ajax調用。Codeception,無法模擬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。