assert Json смотрит только на первый список в repsonse. (PHP Laravel) - PullRequest
0 голосов
/ 28 апреля 2020

Приветствие,

Я пытаюсь создать этот тест для проверки API моих школ

        $suburb = "BobsTown";
        $postcode = 2000;
        $response = $this->json('GET',"http://hostname/api/schools/$postcode/$suburb");

        $response->
            assertStatus(200)->
                assertJson([[
                    ["school_name" => "BobsTown High School",
                    "school_type" => "Secondary"
                    ],
                        [[
                            "boys-enrolments" => "439",
                            "girls-enrolments" => "381",
                            "indigenous-enrolments" => "12"
                        ]]
                ]]
            );

Фактический упадок API заключается в следующем.

{
   {
    {
        {
            "calendar_year": "2019",
            "school_name": "BobsTown Public School",
            "suburb": "BobsTown",
            "postcode": 2000,
            "school_type": "Primary",
        },
        {
            {
                "girls-enrolments": 318,
                "boys-enrolments": 359,
                "indigenous-enrolments": 16,
            }
        }
    },
    {
        {
            "calendar_year": "2019",
            "school_name": "BobsTown Valley Public School",
            "suburb": "BobsTown",
            "postcode": 2000,
            "school_type": "Primary",
        },
        {
            {

                "girls-enrolments": 281,
                "boys-enrolments": 269,
                "indigenous-enrolments": 12,
            }
        }
    },
    {
      {
            "calendar_year": "2019",
            "school_name": "BobsTown High School",
            "suburb": "BobsTown",
            "postcode": 2000,
            "school_type": "Secondary",
      },
      {
            {
               "girls-enrolments": 381,
               "boys-enrolments": 439,
               "indigenous-enrolments": 12,
            }
      }
    }
   }

Этот тестовый код работает правильно, когда тестируемая школа является первой в списке, однако, как вы можете видеть, старшая школа BobsTown является последней в списке, кажется, что тест проверяет только первый элемент в списке.

phpunit возвращает эту ошибку.

--- Expected
+++ Actual
@@ @@
...
-      'school_name' => 'BobsTown High School',
+      'school_name' => 'BobsTown Public School',
...

Я неправильно использую assert Json? Мое предположение было, что оно возвращает истину, если утверждение верно в любом месте ответа.

1 Ответ

0 голосов
/ 28 апреля 2020

Мне удалось получить желаемую функциональность, используя assertJsonFragment()

  public function testSchools4()
    {
        $suburb = "BobsTown";
        $postcode = 2000;
        $response = $this->json('GET', "http://hostname/api/schools/$postcode/$suburb");

        $response->assertStatus(200)->assertJsonFragment(
            [
                "school_name" => "BobsTown High School",
                "school_type" => "Secondary"
            ]
        )->assertJsonFragment([
            "girls-enrolments" => 381,
            "boys-enrolments" => 439,
            "indigenous-enrolments" => 12
            ]);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...