2013-07-14 5 views
5

codeceptionでajax呼び出しを複製できません。例えばコード化、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の第2引数です。しかし、どんな反応がいつも空であってもそれは見える。私は次の操作を行う場合

また、:

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

私はのvar_dump()のためにこれを受け取る:Codeceptionで期待通りに他の

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

すべてが動作しますが、私はPhpBrowserを使用しています。

答えて

1

私はこの答えは誰にもありませんどのように役に立つと確信しているが、私は同様のエラーメッセージのためにグーグルながら、ここに上陸した:

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

ずっと髪引っ張った後、私はからそのいくつかのデバッグ出力を発見私のコントローラ(var_dump)は、返されたドキュメントを有効なJSONにしていないため、$I->seeResponseContainsJson()を使用すると内部的にエラーが発生しました。応答が有効ではないため、JSON

コントローラが送信した応答が有効なJSON 、このエラーはなくなるはずです

関連する問題