/var/log/jsoizo

メモ帳 技術とか趣味とか

RedisまわりのUTを書きたかったらjedis-mockがべんり

タイトルの通り。

redisアクセスするScalaコードのユニットテストでつかって便利だった。

github.com

wiremockみたいにredisのプロトコルをモックしてくれるやつ。

使い方

READMEに書いてあるとおりで特に詰まることはない。 以下はscalatestから呼び出すサンプル。redisクライアントはscala-redisを利用。

class RedisSpec extends AnyFunSpec with BeforeAndAfterAll {

  // モックサーバ を宣言
  val redisMockServer: RedisServer = RedisServer.newRedisServer()

  // テスト開始時にモックサーバを起動
  override def beforeAll(): Unit = {
    redisMockServer.start()
    super.beforeAll()
  }

  // テスト終了時にモックサーバを停止
  override def afterAll(): Unit = {
    redisMockServer.stop()
    super.afterAll()
  }

  // Redisクライアントを宣言
  // モックサーバの起動後にhostやportを取得したいのでlazy valとし
  // クライアントが最初に呼び出されるときにgetHost, getBindPortする
  lazy val redisClient = new RedisClient(redisMockServer.getHost, redisMockServer.getBindPort)

  it("example") {
    // given
    val key = "key"
    val value = "jedis-mock is very useful"

    // when
    redisClient.set(key, value)

    // then
    val expected = Some(value)
    assert(redisClient.get(key) == expected)
  }


}

呼び出しのN回目以降はエラーを吐くとかもできるみたいなので、
エラーハンドリングがうまいことできているかみたいなのも一応検査できるっぽい。