Странное поведение assertJSON - PullRequest
1 голос
/ 17 марта 2019

Я хочу проверить, содержит ли ответ AJAX ожидаемый массив.
Пока все хорошо, не особо много.
Вот так должен выглядеть мой массив:

array (
  'data' => 
  array (
    0 => 
    array (
      'key1' => 'value1',
      'key2' => 'value2,
    ),
    1 => 
    array (
      'key1' => 'value3',
      'key2' => "value4",
    ),
  ),
)

Когда я запускаю свой тест:

$request->assertJson([the array mentioned above]);

Массив действительно выглядит так, но все равно дает сбой.Зачем?потому что на самом деле он ожидает массив дважды.
В окне сравнения я вижу, что он ожидает этого:

array (
  'data' => 
  array (
    0 => 
    array (
          'key1' => 'value1',
          'key2' => 'value2,
    ),
    1 => 
    array (
          'key1' => 'value3',
          'key2' => "value4",
    ),
  ),
  0 => 
  array (
          'key1' => 'value1',
          'key2' => 'value2,
  ),
  1 => 
  array (
          'key1' => 'value3',
          'key2' => "value4",
  ),
)

Но получил упомянутый выше массив (что было бы и тем, чего я ожидаю).

Когда я запускаю $request->assertJSON([]); тест завершается успешно, но это не должно быть так, как он должен работать, не так ли?

1 Ответ

0 голосов
/ 17 марта 2019

Это не реальный ответ (с точки зрения решения основной проблемы), но, поскольку я предполагаю, что это ошибка, я хочу поделиться решением проблемы с людьми, которые тоже сталкиваются с этой проблемой:
Это довольнопросто.Просто сохраните json в переменную $array = $request->json() (при условии, что ответ сохранен в переменной $request.
Затем проверьте содержащийся массив.
$this->assertEquals(EXPECTED_DATA, ARRAY_TO_TEST).

...