sunabak0 / akiyadego-kotlin

https://sunabak0.github.io/akiyadego-kotlin/
0 stars 0 forks source link

議事録-2023-01-14-Sat #113

Open kinari321 opened 1 year ago

kinari321 commented 1 year ago

前回の議事録

前回

前回から今回まで

決めたいこと・相談事項

-

今回やったことまとめ

-

今回 Merge した Pull Request

次(予定)

sunakan commented 1 year ago

https://github.com/sunabak0/realworld-kotlin-springboot-jdbc/blob/5c394e8d9e8ca7af9c863f623fba4108c31ad6e5/src/test/kotlin/com/example/realworldkotlinspringbootjdbc/api_integration/DefaultTest.kt#L51-L70

            val actualStatus = response.status
            val actualResponseBody = response.contentAsString

            /**
             * then:
             * - ステータスコードが一致する
             * - レスポンスボディが一致する
             */
            val expectedStatus = 200
            val expectedResponseBody = """
                {
                  "tags": ["rust", "scala", "kotlin", "ocaml", "elixir"]
                }
            """.trimIndent()
            // ステータスコードが一致するかどうかのテスト
            Assertions.assertThat(actualStatus).isEqualTo(expectedStatus)

            // JSONとして合ってるかどうか比較テスト
            JSONAssert.assertEquals(
                expectedResponseBody,
                actualResponseBody,
                // 厳しさ具合(拡張禁止、順番は守らなくていい)
                CustomComparator(JSONCompareMode.NON_EXTENSIBLE)
            )

Kotlin(Spring Boot)の API テスト(MockMVC)で CustomComparator を用いて独自の比較方法を作成 > JSONCompareMode について

sunakan commented 1 year ago

JSONAssert.assertEqualsで文字列一致ではなく、JSON一致で比較

{
  "name": "john",
  "arr": [1,2,3,4]
}

{"arr": [1,2,3,4], "name": "john"}

は同じ

kinari321 commented 1 year ago

使ったサイト