2013-07-14 10 views
5

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.

risposta

1

sono sicuro, non quanto sia utile questa risposta è quella di chiunque altro, ma ho atterrato qui mentre googling per un messaggio di errore simile:

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

Dopo molte tirate di capelli, ho scoperto che alcuni output di debug da il mio controller (un var_dump) stava causando il documento restituito non valido JSON e l'uso di $I->seeResponseContainsJson() generava quindi errori interni, poiché la risposta non era valida JSON

Quindi, assicurarsi che la risposta che il controller sta inviando sia JSON valido e questo errore dovrebbe andare via

Problemi correlati