二重通信しているメソッドのテスト方法

Presenterの通信をしているメソッドはテストを書くことになっているが
大体は1個のメソッドの中には1個の通信処理(1Api)という仕組みになっており
テスト書くことで考えたりはしないけど
たまに二重で通信処理を書いてあるメソッドがあったりしてテスト書くのが難しくなったりもする

覚えた方法2つをメモする

  1. そもそも二重にならないよう、Presenterのメソッドを修正する(1:1テストにすること)
    二重通信のメソッドをPresenterで違うメソッドに切り出して1:1になるようにする
    そのあとviewCallbackでActivity側に戻して切り出したメソッドで参照するようにする
    せめてPresenterで二重になることはないでしょう
    ただしViewは増えることになってしまう

  2. 二重になっているPresenterをMockする

val presenter = object : SamplePresenter(MockedView(), lifecycle) {
   override fun 二重になってるメソッド(param: Param?) {
      calledTimes.getAndIncrement()
   }
}

こんな感じで presenter.テストするメソッド() にすれば
テストするメソッドがよばれ、さらに二重になってるメソッドがよばれているかどうかテストできる

テストが書き辛いというのはもともとのコードがでかいかロジックがよくないか...
そういう時はテストをどう書けばいいか考えるより
元のコードのリファクタリングを検討した方が根本的な解決になりそう