В моей бизнес-логике меня не волнует порядок элементов.
Вот мой пример теста
$this->getJson('/api/order-attempts')
->assertJson([
'data' => [
['status' => 'error'],
['status' => 'error'],
['status' => 'confirmed'],
['status' => 'confirmed'],
['status' => 'confirmed'],
],
])->isOk();
Это терпит неудачу время от времени только из-за заказа. Я не хочу ставить сортировку в API, потому что мне это не нужно.
Это возможно assertJsonIgnoringOrder()
каким-то образом?
Существует широкий спектр JSON-утверждений, и вы можете построить из этого то, что ищете.
Например, вы можете утверждать для частей JSON, используя assertJsonFragment()
или просто правильная структура, игнорируя фактический контент, используя assertJsonStructure()
.
Например, вы можете посмотреть, содержит ли json правильное количество элементов с ключом status
с помощью assertJsonCount($number, $key)
.
К сожалению, нет конкретного утверждения, которое уже соответствует вашему требованию, по крайней мере, по умолчанию. Там может быть какая-то библиотека, предоставляющая это для вас.
Вы можете проверить структуру и выравнивание JSON с помощью assertSame()
Например попробуйте это
$this->assertSame(json_encode([
'data' => [
['status' => 'error'],
['status' => 'error'],
['status' => 'confirmed'],
['status' => 'confirmed'],
['status' => 'confirmed'],
]),$response->getContent(), '');