Kotlin Springboot -- 12부 게이지 와 kluent 와 ScenarioDataStore
何をしたいのか
作成したアプリの API を叩いて、RESPONSに期待する値が返ってくるかをtestしたい.
HTTP 요청용 Java 라이브러리
https://zetcode.com/kotlin/getpostrequest/
zetcode さんの kotlin 에서 GET/POST HTTP richestの記事を参考にした.
import com.thoughtworks.gauge.Step
데포르트에서 thinkworks の gauge の Step 은 수입하고 있습니다.
import java.net.URI
import java.net.http.HttpClient
import java.net.http.HttpRequest
import java.net.http.HttpResponse
java.net에서 http 노크라이안트, 리크에스트, 레스폰스
これらのライブラリをインポートする
HTTP 라이브 브라리를 사용하는 레스폰스を取得する
이 Java.net の HTTP 라이브브라리로 HTTP 리크에스트를 가능하게 하는 단계 を実装する.
@Step("Persons一覧をリクエストする")
fun requestPersons() {
val client = HttpClient.newBuilder().build();
val request = HttpRequest.newBuilder()
.uri(URI.create("http://localhost:8080/persons"))
.build();
val response = client.send(request, HttpResponse.BodyHandlers.ofString());
println(response.body())
}
Http 클라이언트의 인스턴스를 생성
Http richestのinstantsを作成して,
URL を localhost8080 にする
Http craiantのinstancesの send を使って
いま組み立 て た リ ク EST を送信 し て、레스폰스変数に入れる.
레스폰스의 몸을 펼칠 수 있는
println(response.statusCode())
これでレスポンスステータスコードも見れる.
레스폰스を시나리오데이타스트アに保存する
레스폰스에는 코레데미레타.
しかし、시나리오を分離するためには取ってきたレスポンスを保存して、それに対して個別に中身に何が有るか、アサーションをする必要が有る.
こういう場合、backクendではデータストアというものがある.
リフレッシュしても消えない保存場所で、Frontだとローカルストレージに当たるらしい.
https://www.javadoc.io/doc/com.thoughtworks.gauge/gauge-java/0.7.10/com/thoughtworks/gauge/datastore/ScenarioDataStore.html
게이지 で扱えるのは、시나리오데이타스트아그렇다고.
@Step("Persons一覧をリクエストする")
fun requestPersons() {
val client = HttpClient.newBuilder().build();
val request = HttpRequest.newBuilder()
.uri(URI.create("https://www.google.com"))
.build();
val response = client.send(request, HttpResponse.BodyHandlers.ofString());
ScenarioDataStore.put("StatusCode", response.statusCode())
}
データストアは key value で値を登録する.
なので、시나리오데이타스트아노 넣어 메속드로
"StatusCode"라고 말하는 키로 레스폰스의 스테이타스코드를 유지합니다.
kluent でリクESTから返って きたレスポンスを期待値と比較する
https://github.com/MarkusAmshove/Kluent
shouldBeEqualTo などで自然言語っぽくtestの実装をするには
kluent が便利.
https://github.com/MarkusAmshove/Kluent#maven
<dependency>
<groupId>org.amshove.kluent</groupId>
<artifactId>kluent</artifactId>
<version>{version}</version>
<type>pom</type>
</dependency>
公式で Maven での導入方法をみて, pom.xml に追記する.
버전 については、GitHub のリリースタブをみると書いてある.
<scope>test</scope>
범위 が 테스트 だと記載する ことで、testのprojektでも使えるようになる.
@Step("<statusCode>が返る")
fun shouldBeStatusCode(statusCode: Int) {
ScenarioDataStore.get("StatusCode") shouldBeEqualTo statusCode
}
ScenarioDataStore の get で、
先程作た "StatusCode"의 키에서 取り出し
引数の期待値とする statusCode と比較する.
* Persons一覧をリクエストする
* "200"が返る
すると, このように別の行でtestできる.
Reference
이 문제에 관하여(Kotlin Springboot -- 12부 게이지 와 kluent 와 ScenarioDataStore), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kaede_io/kotlin-springboot-part-12-e2e-tesutoyong-nizuo-cheng-sita-gauge-puroziekutode-api-wotesutosuru-4iod텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)