質問: a() xctassertequal(a.incrementedvalueof(bstub), bstub.valuetoprovide + 1) } } オプション2を使用することに欠点はありますか? aとbはより緊密に結合されていますか? クラスbが別のフレームワークの一部である場合、問題はありますか?将来的には問題になるかもしれませんswift aがbからのメソッドを使用する場合、それはpublicであり、openではないため、オーバーライドできません(たとえば、value())?
回答: swiftはよりプロトコル指向の設計に入ります私はoption 1に行きます特別なクラスの代わりにプロトコルに準拠する場合、任意の種類(クラス、構造体、列挙型)のスタブを交換できます。コードはこの特定のクラスに結合されていません。したがって、単純な構造体で複雑なクラスをモックすることができます。