2017-07-31 42 views
1

Laravelテストで多次元配列をPOSTできません。一次元配列POSTは正常です。おそらく、私はjson_encodeを使って他の関数を使っているはずですが、これをサポートするものは何も見つかりません。Laravelテストで多次元配列をPOSTする方法は?

私は以下のデータ構造をPOSTできることが重要です。データ構造をよりよく説明するためにseeJSONStructure()アサーションを追加しました。

$this->json('POST', '/endpoint', [ 
    'foo' => 'foo', 
    'bar' => [ 
     [ 
      'foo' => 'foo', 
      'bar' => 'bar' 
     ] 
    ] 
]) 
->assertResponseStatus(200) 
->seeJsonStructure([ 
    '*' => [ 
     'foo', 
     'bar' => [ 
      '*' => [ 
       'foo', 
       'bar' 
      ] 
     ] 
    ] 
]); 

これは私にネストされた配列を削除

PHPUnit_Framework_Exception: Argument #2 (No Value) of PHPUnit_Framework_Assert::assertArrayHasKey() must be an array or ArrayAccess 

がエラーを防ぐエラーが発生しますが、多次元配列を投稿する方法がなければならない。ここで

は私のテストの一例です。

以下が正常に動作します:

$this->json('POST', '/endpoint', [ 
    'foo' => 'foo', 
    'bar' => 'bar' 
]) 
->assertResponseStatus(200) 
+0

チェック 'バー=> 'バー用 新しいコードはFOO => 'FOO'、 '&' 'bar' に –

+0

'単一引用符を追加します' => 'bar''は入力ミスですか? – Nawin

+0

申し訳ありませんが、実際の問題ではなく、私の例では一重引用符が誤字です。 – Elliot

答えて

0

は、以下を使用してテストコードを置き換える:

$this->json('POST', '/endpoint', [ 
    'foo' => 'foo', 
    'bar' => [ 
     [ 
      'foo' => 'foo', 
      'bar' => 'bar' 
     ] 
    ] 
]) 
->assertResponseStatus(200) 
+0

あなたの答えは何が変わったのですか? – Nawin

+0

@Nawin:OPの間違いをコードに訂正しました –

+0

@Elliotが提供するものと同じです... – Nawin

0

documentassertArrayHasKey()あたりのないよう、次のように試してみてください...配列のキーを与える必要がありますテストしました...そしてあなたのendpointパスも正しいことを確認してください。

$this->json('POST', '/endpoint', [ 
    'foo' => 'foo', 
    'bar' => [  
      'baz'=>[ 
        'foo' => 'foo', 
        'bar' => 'bar' 
        ] 
    ] 
]) 
->assertResponseStatus(200) 

編集:ここJsonStructure

$this->json('POST', '/endpoint', [ 
    'foo', 
    'bar' => [  
      '*'=>[ 
        'foo', 
        'bar' 
        ] 
    ] 
]) 
+1

ありがとう、ありがとうございますが、私のAPIはバーがオブジェクトの配列であることを期待しています。キー構造のアサーションを含めるように質問を更新しましたので、より明確になりました。このデータ構造をPOSTするにはどうしたらいいですか? – Elliot

+0

@ElliotあなたはjsonStructureのように求めています – Nawin