mockk便利ですよね。suspend関数のモック*1までサポートしてるしstatic, objectのモックもサポートしているのでいろいろはかどります。
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渡せるとは!ありがとうございます。
mockkって最後にblock渡せませんでしたっけ?receiverがmock objectになったと思います
— 駄流マ・おじぇい (@red_fat_daruma) 2018年11月29日