我必須單元測試C#項目,它依賴於其他幾個Web服務。雖然單元測試我不想調用服務,但只是返回一個虛擬值。我正在嘗試使用墊片,但我面臨的問題。當前代碼創建針對外部web服務的客戶端,然後調用一個方法單元測試一個c#.Net網絡服務通過隔離它依賴的網絡服務
CSSFormTransformationClient client = new CSSFormTransformationClient();
MemoryStream stream = client.TransformToPDF(cssRequest);
由svcutil.exe的工具生成的CSSFormTransformationClient的定義和有一個方法TransformToPDF如下
public System.IO.MemoryStream TransformToPDF(Mycompany.Enterprise.Reporting.ServiceReferences.CssTransformation.TransformRequest transformRequest)
{
return base.Channel.TransformToPDF(transformRequest);
}
現在我假設我可以用以下方式使用勻場來模擬transformToPDF的返回值
ServiceReferences.CssTransformation.Fakes.ShimCSSFormTransformationClient.AllInstances.TransformToPDF =() => { }
但是它不允許我。有人告訴我如何模擬transformToPDF方法?
感謝。
P.S - 該項目使用WCF。
我已經添加了假裝配和一切..只是錯過了正確的方式去做這個.. –
你可以定義「不讓我」?你是否收到錯誤或其他消息?究竟是什麼問題?另外,你有沒有嘗試Moq? – Brandon
@Brandon _ServiceReferences.CssTransformation.Fakes.ShimCSSFormTransformationClient.AllInstances_ 之後它只給了我兩個選項「等於」和「引用等於」。如果我做了其他事情,VS強調它是紅色的。我沒有嘗試過模擬。鑑於moq在這種服務隔離中的一般描述和一般適合性,是否會暗示墊片? –