2

在我的业务逻辑中,我不关心元素的顺序。

这是我的测试示例

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

它不时失败只是因为订单。我不想对 api 进行排序,因为我不需要它。

有可能以assertJsonIgnoringOrder()某种方式吗?

4

2 回答 2

1

您可以使用检查 json 的结构和对齐方式assertSame()

例如试试这个

 $this->assertSame(json_encode([
     'data' => [
         ['status' => 'error'],
         ['status' => 'error'],
         ['status' => 'confirmed'],
         ['status' => 'confirmed'],
         ['status' => 'confirmed'],
     ]),$response->getContent(), '');
于 2018-10-19T12:02:06.603 回答
-1

有各种各样的 JSON 断言,您可以从中构建您正在寻找的东西。

例如,您可以断言部分 json 使用assertJsonFragment()或仅使用结构是否正确,而忽略使用assertJsonStructure().

例如,您可以查看 json 是否包含正确数量的元素,键status使用assertJsonCount($number, $key).

不幸的是,没有特定的断言已经符合您的要求,至少默认情况下没有。那里可能有一些图书馆为您提供它。

于 2018-10-19T11:33:48.450 回答