LoginSignup
1
1

More than 1 year has passed since last update.

Kotlinでrest-assuredを使う

Posted at

REST APIのテストコードを効率良く記述するためのライブラリであるrest-assuredをKotlinから利用してみた。

ライブラリを依存関係に設定する

Kotlin用のExtensionライブラリが提供されているため、これを依存関係に設定するだけでrest-assured本体は推移的に解決される。

build.gradle.kts

dependencies {
    testImplementation("io.rest-assured:kotlin-extensions:4.5.1")
}

テストコードを実装する

先述のExtensionライブラリは、trainling lambdaやinfix notation、scope functionを活用してすっきりとした記述を可能にしている。条件・アサーション等をブロックで区切ることができ、各ブロック内のメソッド呼び出しをメソッドチェーンとして繋いで記述する必要がない。

val id: String = Given {
    baseUri("https://...")
    body(mapOf("key1" to "value1", "key2" to "value2"))
} When {
    post("/api")
} Then {
    statusCode(HttpStatus.SC_OK)
    body("key1", equalTo("value1"))
} Extract {
    path("id")
}

補足

上記のコード中に登場するメソッドについて、Givenpublic fun Given(block: ...): ...というシグネチャとなっており、上記ではblockをtrailing lambdaとして記述している。またWhen, Then, Extractにはinfix修飾子が設定されているため、前のメソッドにドットなしで繋げて記述ができる。各ブロックはscope function (apply) に渡されるようになっているため、メソッドチェーンでの記述が不要となっている。

その他

テストコードを動かしながら実装するときに、Kotlinのビルドに少し時間がかかるのは辛いところ。

テストプロジェクトの例としてexample-test-restassuredリポジトリを作っている。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1