ServiceStack - 检查单元测试中的 WSDL 更改
ServiceStack - Check for WSDL changes in a unit test
我们想要一个单元测试,如果 WSDL 已更改,该单元测试将失败。
可能的逻辑:
生成一个新的 WSDL 并将其与存储在单元测试旁边的文件中的元数据页面中的旧 WSDL 进行比较。
问:这可能吗?如果是,我们如何在单元测试中生成新的 wsdl?
我们使用 5.11 版本
ServiceStack 的 SOAP Support only supports ASP.NET Framework hosts which precludes it from running in an integration test 在 HttpListener 自托管中 运行,但您的里程可能会有所不同,并且可能适用于您的情况。
这是一个快速集成测试示例,它检查 SOAP compatible ServiceStack 服务的 WSDL:
[DataContract]
public class Hello : IReturn<HelloResponse>
{
[DataMember]
public string Name { get; set; }
}
[DataContract]
public class HelloResponse
{
[DataMember]
public string Result { get; set; }
}
class MyServices : Service
{
public object Any(Hello request) =>
new HelloResponse { Result = $"Hello, {request.Name}!" };
}
public class AppHost : AppSelfHostBase
{
public AppHost() : base("MyApp Tests", typeof(MyServices).Assembly) {}
public override void Configure(Container container)
{
Plugins.Add(new SoapFormat());
}
}
然后集成测试只对 /soap12
执行 GET 请求以检索其 WSDL:
[TestFixture]
public class Tests
{
const string BaseUrl = "http://localhost:20000/";
ServiceStackHost appHost;
[OneTimeSetUp]
public void OneTimeSetUp() => appHost = new AppHost()
.Init()
.Start(BaseUrl);
[OneTimeTearDown]
public void OneTimeTearDown() => appHost.Dispose();
[Test]
public void Check_wsdl()
{
var wsdl = BaseUrl.CombineWith("soap12").GetJsonFromUrl();
wsdl.Print();
}
}
如果自托管不起作用,您需要针对 运行ning IIS/ASP.NET 主机对其进行测试以获取其 WSDL。
我们想要一个单元测试,如果 WSDL 已更改,该单元测试将失败。
可能的逻辑: 生成一个新的 WSDL 并将其与存储在单元测试旁边的文件中的元数据页面中的旧 WSDL 进行比较。
问:这可能吗?如果是,我们如何在单元测试中生成新的 wsdl?
我们使用 5.11 版本
ServiceStack 的 SOAP Support only supports ASP.NET Framework hosts which precludes it from running in an integration test 在 HttpListener 自托管中 运行,但您的里程可能会有所不同,并且可能适用于您的情况。
这是一个快速集成测试示例,它检查 SOAP compatible ServiceStack 服务的 WSDL:
[DataContract]
public class Hello : IReturn<HelloResponse>
{
[DataMember]
public string Name { get; set; }
}
[DataContract]
public class HelloResponse
{
[DataMember]
public string Result { get; set; }
}
class MyServices : Service
{
public object Any(Hello request) =>
new HelloResponse { Result = $"Hello, {request.Name}!" };
}
public class AppHost : AppSelfHostBase
{
public AppHost() : base("MyApp Tests", typeof(MyServices).Assembly) {}
public override void Configure(Container container)
{
Plugins.Add(new SoapFormat());
}
}
然后集成测试只对 /soap12
执行 GET 请求以检索其 WSDL:
[TestFixture]
public class Tests
{
const string BaseUrl = "http://localhost:20000/";
ServiceStackHost appHost;
[OneTimeSetUp]
public void OneTimeSetUp() => appHost = new AppHost()
.Init()
.Start(BaseUrl);
[OneTimeTearDown]
public void OneTimeTearDown() => appHost.Dispose();
[Test]
public void Check_wsdl()
{
var wsdl = BaseUrl.CombineWith("soap12").GetJsonFromUrl();
wsdl.Print();
}
}
如果自托管不起作用,您需要针对 运行ning IIS/ASP.NET 主机对其进行测试以获取其 WSDL。