[英]Add unit test case to test external webservice (.asmx) .NET
我編寫了代碼,以使用System.Web.Services.ServiceDescription
讀取外部Web服務並查找暴露方法及其參數。 我還能夠調用該方法並通過webservice獲取輸出。 這僅基於外部Web服務Url完成。
一切都從CodeBehind(C#)完成。
我需要添加單元測試用例以通過添加虛擬.asmx Web服務來測試功能,該功能將由單元測試訪問。
請讓我知道或對我如何動態創建和使用虛擬服務提出建議。
據我所知,有兩個不同的功能主義者:
WSDL提供程序-即從某處WSDL解析器獲取有效wsdl的類-解析wsdl並提取數據的類
這是這些方法的偽代碼實現,以使其易於模擬和單元測試。
public interface IWSDLProvider
{
string GetWsdlFromService(string url);
}
public class MyWsdlProvider : IWSDLProvider
{
private readonly IWebWrapper _webCLient;
public MyWsdlProvider(IwebWrapper webClient)
{
_webClient = webCLient;
}
public string GetWsdlFromService(string url)
{
//do here whatever is needed with the webClient to get the wsdl
}
}
public interface IWSDLParser
{
MyServiceData GetServiceDataFromUrl(string url);
}
public class MyWsdlParser : IWSDLParser
{
private readonly IWSDLProvider _wsdlProvider;
public MyWsdlParser(IWSDLProvider wsdlProvider)
{
_wsdlProvider = wsdlProvider;
}
public MyServiceData GetServiceDataFromUrl(string url)
{
//use the wsdl provder to fetch the wsdl
//and then parse it
}
}
IWebClient是WebClient的包裝,可以輕松進行模擬。
將任何模擬框架與上述代碼一起使用,您可以輕松地隔離和模擬任何部分,並僅測試當前的行為。 這樣,您甚至可以為wsdl提供程序進行模擬,以返回要測試的任何wsdl。
您甚至可以走得更遠,並包裝/隔離System.Web.Services.ServiceDescription
調用,因此您實際上不必在測試中甚至通過wsdl,只需處理結果即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.