我有一個WPF程序,使用MVVM體系結構,通過WCF訪問SQL Server。我已經達到了需要進行集成測試的程度,即程序運行正常,單元測試全部通過。如何更改WCF服務進行集成測試
我發現關於如何進行集成測試的信息很少,過去從未做過。我面臨的問題是,需要訪問WCF服務的所有視圖模型在其構造函數上都有一個參數,用於我的View Model Locator注入到構造函數中的IDataService
。
這裏是服務的一個樣本,其中CdaService
指的是我開發數據庫:
public class DataService : CdaServiceManager.IDataService
{
public void Select(Action<CdaServiceManager.CdaService.DatabaseTable> callback, CdaServiceManager.CdaService.DatabaseTable thisTable)
{
using (CdaService.Service1Client webService = new CdaService.Service1Client())
{
var item = webService.Select(thisTable);
callback(item);
}
}
}
我有一個單獨的服務器上創建我的開發環境的精確副本,數據庫和WCF服務是完全一樣的。在集成測試期間,數據庫被清除並重置爲以新數據開始。
在我的測試中,我有一個不同的服務參考,名爲CdaService
,它指向測試服務器WCF。當我打電話給我的視圖mdoel構造函數時,我顯然無法發送我的開發版本IDataService
,因爲它指向真實的服務器。
我看到爲測試環境創建我自己的IDataService
實現的一個選項,但隨後生產環境服務發生變化時,我將不得不確保更改測試環境服務。似乎馬虎。
有沒有更好的方法來做到這一點。理想情況下,我將能夠向DataService發送我希望它使用的WCF引用,但我似乎無法將其包圍。任何其他建議或想法,將不勝感激。
我在單元測試中使用存根,但對於集成測試,我想用實際的服務和數據庫來測試整個項目,所以我不認爲Moq或FakeItEasy會起作用,除非我理解他們是不正確的。我會嘗試你的建議發送端點,如果這個工作,我會標記它的答案。謝謝 –