Я не уверен, почему тест не пройден.Насколько я понимаю, функция assertJson будет в основном проверять, есть ли где-нибудь пары ключ-значение из моего массива в ответе JSON.Взглянув на ответ JSON, я вижу, что он определенно есть, поэтому я не уверен, что пропускаю.Похоже, что данные находятся в еще одном массиве, но из того, что я прочитал, assertJson должен иметь возможность находить данные независимо от их глубины вложения.
Я пробовал другие предлагаемые варианты, такие как «assertJsonFragment» и даже вручную конвертировалмой json-ответ на массив и проверку этого с помощью assertArraySubset, который ... вроде того, что assertJson делает уже в соответствии с документами.
Test:
public function testGetExistingGroupMessage(){
$user = factory(User::class)->create();
$group = factory(Group::class)->create();
$group->users()->save($user);
//Because default factory also makes a new user and group, we're going to make the model instead then overwrite them.
$message = factory(GroupMessage::class)->make();
$message->user_id = $user->id;
$message->group_id = $group->id;
$group->messages()->save($message);
$response = $this->actingAs($user,'api')->json('GET','/api/group-messages/'.$group->id);
$response->assertStatus(200)->assertJson([
'user_id' => $user->id,
'message' => $message->message,
'group_id' => $group->id,
]);
}
Вывод:
Unable to find JSON:
[{
"user_id": 206,
"message": "my_message",
"group_id": 97
}]
within response JSON:
[[
{
"id": 31,
"user_id": 206,
"message": "my_message",
"group_id": 97,
"filename": null,
"file": null,
"file_path": null,
"image": null,
"image_path": null,
"created_at": "2019-09-27 01:53:20",
"updated_at": "2019-09-27 01:53:20",
"deleted_at": null,
"lat": null,
"lng": null,
"user": {
"id": 206,
"name": "Michaela Shields",
"email": "muller.cordell@example.org",
"api_token": null,
"created_at": "2019-09-27 01:53:20",
"updated_at": "2019-09-27 01:53:20",
"deleted_at": null,
"agent_id": null,
"device_token": null
}
}
]].
Failed asserting that an array has the subset Array &0 (
'user_id' => 206
'message' => 'my_message'
'group_id' => 97
).
--- Expected
+++ Actual
@@ @@
'device_token' => NULL,
),
),
- 'user_id' => 206,
- 'message' => 'my_message',
- 'group_id' => 97,
)