Non riesco a replicare le chiamate ajax tramite la codeception.Codeception, incapacità di simulare il comportamento dell'ajax
Ad esempio:
$I->sendAjaxPostRequest('login/verify', array('name' => 'name', 'password' => 'password'));
$I->seeResponseIsJson();
non alzerà gli eventuali errori. Ma con l'altra mano, se faccio la seguente:
$I->sendAjaxPostRequest('login/verify', array('name' => 'name', 'password' => 'password'));
$I->seeResponseIsJson();
$I->seeResponseContainsJson(['login_failed' => 1]);
//or
$I->grabDataFromJsonResponse('data.login_failed');
Mi dà questo errore:
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
Quello che ho capito dal errore di cui sopra è che seeResponseContainsJson o grabDataFromJsonResponse internamente passerà una risposta come un secondo argomento per arrayHasArray. Ma sembra che non importa quale sia la risposta sempre vuota.
Inoltre, se faccio la seguente:
$I->sendAjaxPostRequest('login/verify', array('name' => 'name', 'password' => 'password'));
var_dump($I->grabResponse());
ricevo questo per var_dump():
object(Codeception\Maybe)#753 (3) {
["position":protected]=>
int(0)
["val":protected]=>
NULL
["assocArray":protected]=>
NULL
}
Tutto il resto funziona come previsto con Codeception, sto usando PhpBrowser.