2016-08-25 7 views
0

seeResponseMatchesJsonTypeコマンドの使用に問題があります。コード参照seeResponseMatchesJsonTypeコマンド

私はvarsの名前と値を持つjson文字列を持っており、エラーは"escrow_status" => "string|null"にあります。変数$escrow_statusは初期化されておらず、nullが返されることが予想されますが、代わりにエラーが発生します。

希望して、誰かがこの問題を解決する方法を知っています。

答えて

0

JsonTypeはオプションフィールドをサポートしていません。
フィールドが見つからない場合は、JsonTypeでフィールドをチェックしないでください。

+0

次に、私はjsonの文字列のデータのタイプをチェックできますか? –

+1

理想的には、2つの別々のテストが必要です.1つはフィールドが存在し、それが文字列であり、もう1つはフィールドがない場所です。 – Naktibalda

0

@Naktibaldaさんのコメントによると、そのアサーションを2つに分割する必要があります。それを行うには多くの方法がありますが、一つは次のとおりです。

$I->canSeeResponseIsJson(); 
$data = json_decode($I->grabResponse()); 
$I->assertArrayHasKey('escrow_status', $data); // might need the assert module 

I:

$I->seeResponseJsonMatchesJsonPat('$.escrow'); // you need JSON path module; I would expect seeResponseContainsJson could do it, but it appears that it also needs a value... 
$I->seeResponseMatchesJsonType(["escrow_status" => "string|null"]); 

もう一つの方法は、応答がJSONであることを主張配列に変換し、そのアレイ上のアサーションを作ることであろうテストでアクタークラスを使用したとします(したがって$I)。

関連する問題