visible true

技術的なメモを書く

mockkとかでモック書く時にalsoと組み合わせると読みやすくなりそうな気がした

mockk便利ですよね。suspend関数のモック*1までサポートしてるしstatic, objectのモックもサポートしているのでいろいろはかどります。

github.com

alsoと組み合わせるとよさそう

mockitoと大体同じなんですがモック作る時ってだいたいこんな感じになります。

val yearly: Sku = mockk()
every { yearly.priceAmountMicros } returns 600000

every関数はmockitoにおけるwhenみたいなもんです。returnsが中置関数になっていて.を省けるんですがまぁあんまりどうでもいいです。 ところでモックオブジェクトとその振る舞いの定義ってバラバラに書くことになっていつももやもやするんですよね。 ということでalso使ってこう書くといいんじゃないかと思いました。

val yearly = mock<Sku>().also { mock ->
  every { mock.priceAmountMicros } returns 600000
}

よく考えたらmockitoでも同じようにできそうですね。 also関数*2便利。

追記

ウボォー「たまに こういう奴が いるから やめられねェ ブログはな」 デフォルトでblock渡せるとは!ありがとうございます。

*1:coEvery, coVerifyなど

*2:apply関数でもいいんですが空間がthisになっちゃうんでalso関数のほうがいろいろ複雑に書く時に楽かなと思ってalso関数にしました