簡體   English   中英

添加單元測試用例以測試外部Web服務(.asmx).NET

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM