0

私はWCFが初めてで、大部分は分散プログラミングでもあります。4 つの個別のサービスを必要とするプロジェクトに取り組んでいます。

各サービスの各コンポーネントの責任を正しく定義しようとしています。サービス A と通信する必要があるサービス B があるとします。サービスごとに、サービス実装クラス、サービス ホスト、およびプロキシ クラスを定義しました。

単体テストを行うために、依存性注入を使用しています。サービス B はサービス A と通信する必要があるため、A のプロキシ クラスのインスタンスをコンストラクター引数としてサービス B に渡しました。

サービス B の単体テストを行っているときは、A のサービス ホストを稼働させておく必要があります。

  1. これは依存性注入の間違った方法ですか? もしそうなら、なぜ、そしてどのようにすすめますか?
  2. 依存性注入についてもっと良い方法はありますか?
  3. 単体テストで正しい結果を得るには、サービス ホストを実行する必要がありますか?
4

1 に答える 1

1

使用を検討してください

  • 生成されたクライアントの代わりにChannelFactory 。

    ChannelFactory<IHello> clientFactory = new ChannelFactory<IHello>("targetConfiguration");
    IHello client = clientFactory.CreateChannel();
    string result = client.SayHello();
    
  • 可能な限りインターフェイスの種類

  • テストを書くときにインターフェイスの実装を注入するためのモック オブジェクト フレームワーク ( example ) の 1 つ。

3 番目の質問については、目的が特定の小さなユニットをテストする場合 (ユニット テストの要点:)、答えは「いいえ」です。ただし、シリアライゼーション/ホスティングの問題がないことを確認するために、いくつかの統合テストを作成することをお勧めします。

于 2009-04-24T15:15:50.190 に答える