Open Seo-4d696b75 opened 1 year ago
🔍 ViewModelのユニットテストを追加します
[!NOTE] Required(先に完了させましょう) 26 Next(次に取り組みましょう) 任意課題 28 29 32
[!NOTE]
[!TIP] Repositoryを導入している場合、ViewModelはRepositoryの関数を呼び出すだけ&プロパティを公開するだけの実装になっているかもしれません。代わりにRepositoryをテストします。
テストを書く前提でプログラムを設計していないと、テストはなかなか書きづらいものです。もしテストが書けなかった場合は次のようなリファクタリングをしてみましょう。
YumemiWeather
テスト対象のViewModelもしくはRepositoryを動かすためにはAPI呼び出しの実装(YumemiWeatherなど)が必要です。しかしテスト中にネットワーク通信が発生してしまうと様々な外的要因が入ってしまい、テスト対象自体に問題が無くてもテストが失敗する可能性があります 😇
ネットワーク通信に限らず、テストでは対象以外の依存をモック(代わりのインスタンス)に差し替えることでテスト対象に関心を集中させます 😎
🔍 ViewModelのユニットテストを追加します
課題内容
テストを意識したアプリ設計
テストを書く前提でプログラムを設計していないと、テストはなかなか書きづらいものです。もしテストが書けなかった場合は次のようなリファクタリングをしてみましょう。
YumemiWeather
をInterfaceで抽象化して、ViewModelもしくはRepositoryのAPI呼び出しはInterfaceに依存させるYumemiWeather
などの依存を渡すモックの利用
テスト対象のViewModelもしくはRepositoryを動かすためにはAPI呼び出しの実装(
YumemiWeather
など)が必要です。しかしテスト中にネットワーク通信が発生してしまうと様々な外的要因が入ってしまい、テスト対象自体に問題が無くてもテストが失敗する可能性があります 😇ネットワーク通信に限らず、テストでは対象以外の依存をモック(代わりのインスタンス)に差し替えることでテスト対象に関心を集中させます 😎
参考資料