これがサービスまたはビジネスエンティティであるかどうかに同意することを確認してください.
通常、サービスは一連のビジネス エンティティを使用して何らかのタスクを実行し、それ自体は永続的なデータを維持しないという点で認識されます。
ビジネス エンティティは、問題のドメイン内の単位であり、概念的に保持したいものです。
それがサービスであることがわかった場合は、サービスを構築するときに何らかの方法で依存関係を注入する必要があります。通常、次のようなコンストラクターを持つことができます: public MyService(IFileObject)
main から作成する場合: var service = new MyService(MyRealFile)
テスト セットアップから作成した場合: var service = new MyService(MyMockedFiled)
テストしているものが実際にビジネス エンティティであることがわかった場合は、エンティティに依存関係を与えないようにする必要があります。通常、これを行うには、一歩下がって、自分とビジネス エンティティの間に Service クラスを構築します。サービスは、必要なすべてのデータをビジネス エンティティに明示的に渡します。あなたの場合、これは、サービスが、ファイルを読み取ることによって学習するはずのものをエンティティに提供することを意味します。
したがって、サービスはファイル システムに依存するものであり、別の (専用の) ファイルリーダー ビジネス エンティティを使用してファイルを読み取ることさえあります。システム内の別の場所で使用する場合、ビジネス エンティティが不正な依存関係の呼び出しを行うことは決して望ましくありません。それらのコードはコンテキスト バウンドになります。これは回避したいことです。ビジネスエンティティは、高速で、個別で、明確で、応答性が高くなければなりません。
単体テストは、注入によって依存関係を受け取る可能性があるサービスに対して行う必要があります。ビジネス エンティティの単体テストを行っていることがわかった場合は、サービス レベルが不足しています。