2009-04-24 80 views
0

我是WCF的新手,在很大程度上也是分佈式編程。我正在開發一個需要4個獨立服務的項目。使用WCF,依賴注入和單元測試的服務間通信架構

我想正確定義每個服務的每個組件的責任。假設我有服務B需要與服務A通信。對於每個服務,我定義了服務實現類,服務主機和代理類。

爲了單元測試,我使用依賴注入 - 因爲B業務需要與服務A通信,我已經通過了A的代理類的一個實例作爲構造函數的參數來服務B.

當我單元測試服務B,我必須讓A的服務主機正常運行。

  1. 這是去依賴注入的錯誤方式嗎?如果是這樣,爲什麼,以及你如何推薦我這樣做?
  2. 有沒有更好的方法去關於依賴注入?
  3. 我是否必須運行服務主機才能在單元測試中獲得正確的結果?

回答

1

考慮使用

  • ChannelFactory,而不是生成的客戶端。

    ChannelFactory<IHello> clientFactory = new ChannelFactory<IHello>("targetConfiguration"); 
    IHello client = clientFactory.CreateChannel(); 
    string result = client.SayHello(); 
    
  • 接口類型儘可能

  • 模擬對象框架(example)的一個編寫測試時注入接口實現。

關於你的第三個問題,如果你的目標是測試特定的小單位(整點測試:),答案是「否」。但編寫一些集成測試以確保您沒有任何序列化/託管問題總是更好。