38 lines
1.8 KiB
C#
38 lines
1.8 KiB
C#
namespace Yh.SchClass.OpenApi.Tests;
|
|
|
|
/// <summary>测试宿主:提供共享配置、门面实例与端点契约断言辅助。</summary>
|
|
internal static class SchClassTestHost
|
|
{
|
|
/// <summary>测试用配置(不设 BasePath,端点直接挂在根路径下)。</summary>
|
|
public static SchClassOpenApiOptions Options()
|
|
=> new() { BaseHost = "http://base.yunhaixingtong.com" };
|
|
|
|
/// <summary>用伪造 handler 装配门面。</summary>
|
|
public static SchClassOpenApi Api(FakeHandler handler)
|
|
=> new(new HttpClient(handler), Options());
|
|
|
|
/// <summary>回放一段无害响应(JSON 字面量 null),使任意端点都能安全走完解析流程。</summary>
|
|
public static FakeHandler Ok() => FakeHandler.Json(HttpStatusCode.OK, "null");
|
|
|
|
/// <summary>断言最近一次请求的 method / 路径 / query。</summary>
|
|
public static void Verify(FakeHandler handler, HttpMethod method, string path, string query = "")
|
|
{
|
|
var request = handler.LastRequest;
|
|
Assert.NotNull(request);
|
|
Assert.Equal(method, request!.Method);
|
|
Assert.Equal(path, request.RequestUri!.AbsolutePath);
|
|
Assert.Equal(query, Uri.UnescapeDataString(request.RequestUri.Query));
|
|
}
|
|
|
|
/// <summary>断言最近一次请求的方法、路径与请求体(用于 POST <c>@RequestBody String</c> 端点)。</summary>
|
|
public static void VerifyBody(FakeHandler handler, string path, string? body, string contentType = "text/plain")
|
|
{
|
|
var request = handler.LastRequest;
|
|
Assert.NotNull(request);
|
|
Assert.Equal(HttpMethod.Post, request!.Method);
|
|
Assert.Equal(path, request.RequestUri!.AbsolutePath);
|
|
Assert.Equal(body, handler.LastRequestBody);
|
|
Assert.Equal(contentType, handler.LastContentType);
|
|
}
|
|
}
|