0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[kotlin]DB保存の順番が変わってtest難しくなった時の話

Posted at

困ったこと

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の記述方法なかなか慣れないので、もっと勉強をして使いこなせる様になりたいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?