WireMock.net 存根 WCF 服务调用

问题描述

我有一个 WCF 服务,它运行在说 http://localhost:8072/MyWCFService 上,并且需要为集成测试设置一个wiremock 存根。我有以下代码作为初步尝试:

var server = wiremockServer.Start();
            server
                .Given(
                    Request.Create().WithPath("http://localhost:8072/").UsingPost()
                )
                .RespondWith(
                    Response.Create()
                        .WithStatusCode(200)
                        .WithHeader("Content-Type","text/xml")
                        .WithBody("Hello World!")
                );

但这失败了(调用代码刚刚超时)。 wiremock 是否能够模拟 WCF SOAP 调用?如果是这样,需要什么设置?我猜这比我上面的幼稚尝试更复杂。

解决方法

使用 WireMock.Net 模拟服务需要以下步骤:

  1. 使用 var server = WireMockServer.Start(); 启动 WireMock.Net 服务器。
  2. 使用 var url = server.Urls[0]; 获取运行此 WireMock.Net 服务器的 URL
  3. 更改您(客户端)代码以使用该网址而不是真实网址。
  4. 现在,当您的真实客户端代码执行 WCF 调用时,此调用将发送到 WireMock.Net,如果匹配此请求,则会返回您的响应。

另一件事,在您的示例中,您不需要像 "http://localhost:8072/" 这样的路径。在您的情况下,您可以跳过 WithPath 或让 WireMock.Net 对 /ThisIsMyApi

之类的路径做出反应

有关详细信息,请参阅 WIKI