我有一个 ASP.NET Web 服务,我正在尝试为其编写单元测试。我需要测试的一件事是从 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 服务代码可能在登台服务器更新后发生了更改),或者更糟的是我可能没有互联网接入,将无法测试。
我很好奇其他人会推荐什么解决方案。你怎么看?