如何配置 ServiceStack v3.xJsonServiceClient
以序列化空请求对象并调用服务?
我想得到一个例外,而是JsonServiceClient
返回null
。我在服务的顶部放了一个断点,它从来没有命中。但是当 name 属性不为空时,它会被命中。
结果消息:
Expected: <ServiceStack.ServiceClient.Web.WebServiceException>
But was: null
这是失败的测试,它不会引发任何前任。
[Test]
public void TestPortfolioBlankNameE2E()
{
JsConfig.IncludeNullValues = true;
var client = TestHelpers.ISWJsonServiceClient();
GetPortfolio request = "{\"name\":\"\"}".FromJson<GetPortfolio>();
WebServiceException ex =
(WebServiceException)Assert.Throws(typeof(WebServiceException),
delegate { client.Get(request); });
Assert.AreEqual(400, ex.StatusCode);
Assert.AreEqual("Bad Request", ex.StatusDescription);
StringAssert.Contains("Required parameter missing: name", ex.Message);
}
直接调用服务的等效测试通过。
[Test]
public void TestPortfolioBlankName()
{
PortfolioService service = TestHelpers.MockServer<PortfolioService>();
GetPortfolio request = "{\"name\":\"\"}".FromJson<GetPortfolio>();
HttpError ex =
(HttpError)Assert.Throws(typeof(HttpError),
delegate { service.get(request); });
Assert.AreEqual(400, ex.Status);
Assert.AreEqual(HttpStatusCode.BadRequest, ex.StatusCode);
StringAssert.Contains("Required parameter missing: name", ex.Message);
}
DTO:
[Route("/portfolio/{name}", "GET")]
public class GetPortfolio : IReturn<GetPortfolioResponse>
{
public String name { get; set; }
}
正如 Doug 指出的那样,这就解释了这一点。它无法创建没有名称值的有效路由。太糟糕了,当它无法创建有效路线时,它不会引发异常。返回null
并不表明问题的根源。