1

我想测试一个 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([]);测试成功时,但这不可能是它应该工作的方式,是吗?

4

1 回答 1

0

这不是一个真正的答案(就解决潜在问题而言),但由于我认为这是一个错误,我想与遇到此问题的人分享一个解决方法:
它非常简单。只需将json存储到变量$array = $request->json()中(假设将响应保存到$request变量中。
然后测试包含的数组
$this->assertEquals(EXPECTED_DATA, ARRAY_TO_TEST)。。

于 2019-03-17T16:48:49.363 回答