【问题标题】:ServiceStack - Check for WSDL changes in a unit testServiceStack - 检查单元测试中的 WSDL 更改
【发布时间】:2021-12-02 13:01:45
【问题描述】:

如果 WSDL 发生变化,我们想要一个失败的单元测试。

可能的逻辑: 生成一个新的 WSDL,并将其与存储在单元测试旁边的文件中的元数据页面中的旧 WSDL 进行比较。

问题:这可能吗?如果是,我们如何在单元测试中生成新的 wsdl?

我们使用 5.11 版

【问题讨论】:

    标签: servicestack


    【解决方案1】:

    ServiceStack 的 SOAP Support 仅支持 ASP.NET Framework 主机,这使其无法在 integration test 中运行,而 integration test 则在 HttpListener Self Host 中运行,但您的情况可能会有所不同,并且可能适用于您的情况。

    这是一个快速集成测试示例,它检查 WSDL 中的 SOAP compatible ServiceStack 服务:

    [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();
        }
    }
    

    如果自主机不起作用,您需要针对正在运行的 IIS/ASP.NET 主机对其进行测试以获取其 WSDL。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      • 1970-01-01
      • 1970-01-01
      • 2013-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多