困ったこと
testで.saveAll()などを使ってRepositoryにデータを格納し、
あるメソッドが発火した時、DBの中身がどの様な形になっているか?をテストしようとしたところ、
データの保存順番がlistOf(hoge, fuga, piyo)などの順番通りではなく入れ替わってしまい、.findAll()で取得したレコードのカラムの中身が思ったように取得できず困ってしまった。
結論概要
取得したいカラムの値が別のカラムのidと紐づいて組み合わせで判定することができそうだったので、組み合わせ条件を判定する関数を作成しassertTrue()で判定した。
コード例
まず、判定用の関数を作成し、assertTrueで判定
fun isVaildRecord(record: SomeRecord): Boolean {
return (record.id == 1 && record.name == "hoge") ||
(record.id == 2 && record.name == "fuga")
val records = listOf(SomeRecord(1, "hoge"), SomeRecord(2, "fuga"), SomeRecord(1, "hoge")) // findAll()で取得したレコードを想定
records.forEach { record ->
assertTrue(isValidRecord(record))
}
条件を関数でカプセル化し、意図が明確になったと思います。
最大の問題は、assertTrueで判定しているので、期待値と実際の値がどう違うからfalseになって落ちているのかがわかりにくいという点です。
kotlinの記述方法なかなか慣れないので、もっと勉強をして使いこなせる様になりたいです。