Avatar
Avatar
Kyome22
非常に鋭い良い質問ですね。 TCAではよくあることなのですが、asyncな関数を叩くときはそのレスポンスをResult型で返却するようにしておき、ある関数を叩いてレスポンスを受け取った時用のAction caseを追加して、sendの中でさらにsendを叩くようにします。そうするとResult型のsuccessとfailureそれぞれパターンでテストケースが書けます ここで問題なのはLUCAにはsendの中で別Actionをsendされた時にそれをトラッキングする仕組みがありません。 (TCAならstore.receive(Action)で追加のActionまで追ってテストができます。) そこをどうするかが現状のLUCAの最大の課題です。つまり質問への回答としては、残念ながらテストの仕方が確立してません。
ありがとうございます! 個人的にはActionを追加発火させていく構成は可読性が低いと思ってるんですが、みんな慣れてて平気なんですかね??(TCAとかだとボタンタップされたときに一連の処理として何が起きるのかを理解するのに苦労する印象。まぁ一連のactionの流れをちゃんとテスト書いてればテスト見れば分かるというのはそうですが) ちなみに自分が最近試してる設計だと、Observableなclass(store的なもの)に状態保持をさせつつ、Viewからのイベントは別のclass(ViewEventAcceptor)で受け取るようにしてます。 ViewEventAcceptorでは状態変更のactionを発火させる構成にしていて、非同期処理を同期的に書けるけどテストもできる感じにしようとしてます。 サンプル:https://github.com/yuukiw00w/SwiftBlogReader/blob/main/AppPackage/Sources/Feature/Feed/UIModel/FeedViewEventAcceptor.swift (まだ固まってないのでご参考までに) (edited)