私はTDDをかなり新しくしており、私は現在のプロジェクトをTDDで書いています。できるだけTDDでカバーしようとしていますが、それまではうまくいっています。TDDからの建築アーキテクチャ "modules"
私のプロジェクトの各「モジュール」は自己完結型です。それらはすべて、プロジェクトの他の部分からの依存関係に依存することなくテストすることができ、私は "モック"依存関係を注入することができます。
CoreData
managedObjectContext
は、プロジェクト内のアイテムを保存および検索するために使用されます。
だから、私はすべてをまとめて、すべてを構築するのが最善であると思っています。
たとえば、私はビューコントローラを持っている可能性がありますCore Data
に何かを保存するサービスを持っているので、このサービス "モジュール"はmanagedObjectContext
が必要です。
どうすればいいですか?
本当にそれを必要としない一連のオブジェクトを通して管理オブジェクトコンテキストを渡す必要がありますか?それは私が働いているすべてのものを壊すように思える?
私はシングルトンを使うことができましたが、以前の経験から痛みの原因になるので避けたいと思っています。
どうすればよいですか?
Javaのパースペクティブから来ています。私は言うことができます:Javaのために、他の**依存性注入**のフレームワークを探しているでしょう。テストに必要な注入はしません。実際の実行時に - そのようなCoreDataオブジェクトをどのようにインスタンス化するかを知っている例を理解しているシステム。そのようなオブジェクトを必要とする「クライアントコード」を利用できるようにします。それから、**あなたのすべてのモジュールを作成した後**あなたはそのような質問を考え始めるのがちょっと奇妙に聞こえます。もちろん、TDDはもっとボトムアップです。すべてのモジュールをやる前に、あるレベルの "トップダウン"デザインを行ってはいけませんか? – GhostCat
@GhostCat okだから、コアデータのマネージドオブジェクトコンテキストを渡す代わりに、「モジュール」にインスタンス化する方法がわかっているはずです。問題は、管理されたオブジェクトのコンテキストをアプリ全体で使用する必要があるということです。それらのうちの1つだけ...私はマネージドオブジェクトのコンテキストにシングルトンを使用し、シングルトンインスタンスを取得する必要があることを再考します。うーん... – Fogmeister
@GhostCat RE最後の質問です。私はまだすべてのモジュールをやっていない。私は今、トップダウン設計について考えていますが、それを必要とするモジュールのTDDには深く入り込む前に考えています。私はあまりにも遠くに行きたくないと思っています。 :) – Fogmeister