Ларавел 5.6.PHPUnit.Метод assertJson (), не зависящий от порядка - PullRequest
0 голосов
/ 19 октября 2018

В моей бизнес-логике меня не волнует порядок элементов.

Вот мой пример теста

$this->getJson('/api/order-attempts')
     ->assertJson([
         'data' => [
             ['status' => 'error'],
             ['status' => 'error'],
             ['status' => 'confirmed'],
             ['status' => 'confirmed'],
             ['status' => 'confirmed'],
         ],
     ])->isOk();

Время от времени он терпит неудачу только из-за заказа.Я не хочу ставить сортировку в API, потому что мне это не нужно.

Можно ли как-то assertJsonIgnoringOrder()?

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Вы можете проверить структуру и выравнивание json, используя assertSame()

Например, попробуйте это

 $this->assertSame(json_encode([
     'data' => [
         ['status' => 'error'],
         ['status' => 'error'],
         ['status' => 'confirmed'],
         ['status' => 'confirmed'],
         ['status' => 'confirmed'],
     ]),$response->getContent(), '');
0 голосов
/ 19 октября 2018

Существует широкий спектр JSON-утверждений, и вы можете построить из этого то, что ищете.

Например, вы можете утверждать части json, используя assertJsonFragment() или просто правильность структуры, игнорируя фактическое содержимое, используя assertJsonStructure().

Например, вы можете посмотреть, содержит ли json правильное количество элементов с ключом status с использованием assertJsonCount($number, $key).

К сожалению, нет конкретного утверждения, которое уже соответствует вашему требованию, по крайней мере, по умолчанию.Там может быть какая-то библиотека, предоставляющая ее для вас.

...