はじめに
Wiremockを使ってテストを作成したところ実行する回数によってエラーが出てしまう挙動があったのでまとめます
割とハマってしまう人が多い気もしました
問題
以下のテストを実行しました
example.spec
## ユーザーを取得できる
* URL"/user/1"にGETリクエストを送る
## ユーザーを取得できる
* API"mockApi"のURL"/user/1"にGETリクエストされた
このテストをWiremockのサーバーを立てて行うと1回目は成功するのですが、2回目以降から以下のエラーがでます
wiremock expected exactly 1 requests matching the following pattern but received 2
received Xは実行するごとに数字が増えていきました
解決方法
これはWiremockが受けたレスポンスを内部でカウントしてしまうことによるエラーでした
テストの実行前(各Stepごと)にWiremockを初期化する必要があります
ですので以下のファイルを作成しました
Setup.kt
import com.thoughtworks.gauge.Step
import com.github.tomakehurst.wiremock.client.WireMock
import com.thoughtworks.gauge.BeforeSpec
class Setup {
@BeforeSpec
fun prepareWireMock() {
WireMock.reset()
}
}
@BeforeSpec
で初期化を行うようにしたところテストが通りました
おわりに
チームの方に聞いたところ速攻で解決しました
ネットで調べていてまったくわからなかったので、適宜聞くことは必要だなと思いました