我想测试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([]);
时,测试成功了,但这不是它应该工作的方式吗?
答案 0 :(得分:0)
这不是一个真正的答案(就解决潜在问题而言),但是由于我认为这是一个错误,因此我也想与遇到此问题的人分享解决方法:
很简单只需将json存储到变量$array = $request->json()
中(假设响应已保存到$request
变量中。
然后测试包含的数组。
$this->assertEquals(EXPECTED_DATA, ARRAY_TO_TEST)
。