単体テストを記述しようとしている ASP.NET Web サービスがあります。テストする必要があることの 1 つは、Web サービスから生成された WSDL ファイルが特定の基準に一致することです。しかし、Web サービスに対して実際に HTTP 要求を実行しないと、WSDL ファイルを取得する方法がわかりません。
私がやりたいことは、次のようなものです(疑似コード):
using System.Web;
using System.Web.Services;
[WebService]
class MyWebService : System.Web.Services.WebService
{
[WebMethod]
string PopNextItem()
{
// Retrieve a string from the database and then delete that record.
}
}
(をちょきちょきと切る)
using Microsoft.VisualStudio.TestTools.UnitTesting;
[TestClass]
class WebServiceTest
{
bool CheckWSDLMeetsCriteria(string WSDL)
{
bool success = true;
// Check file here
return success;
}
[TestMethod]
void WSDL_Should_Match_Criteria()
{
string generatedWSDL = getWSDL(MyWebService.PopNextItem);
Assert.IsTrue(CheckWSDLMeetsCriteria(generatedWSDL));
}
}
もちろん、getWSDL
メソッドはありません。また、どのように記述すればよいかわかりません。テストから wsdl.exe を呼び出して出力ファイルを取得できると思いますが、もっと良い方法があることを願っています。.NET では、WSDL ファイルをプログラムで生成する方法はありますか?
それができない場合は、IIS への HTTP 要求を使用して WSDL ファイルを取得できると思います。問題は、単体テストがローカル マシンで実行されている場合、IIS のローカル インスタンスが実行されていない可能性が高いことです。ステージング サーバーなどから WSDL ファイルを取得しようとすると、古いバージョンのサービス (ステージング サーバーが更新されてからローカル マシンの Web サービス コードが変更された可能性があります) に対してテストが行われる可能性があります。インターネットにアクセスできず、テストできません。
他の人がどのソリューションを推奨するのか興味があります。どう思いますか?