首页 > 解决方案 > 模拟 Swagger Codegen 生成的 api 客户端

问题描述

我使用 swagger-codegen 生成了 C# 客户端。目前我正在围绕该客户端编写一个包装器,并希望围绕我的逻辑进行单元测试。但是,我试图弄清楚如何模拟对生成的客户端的调用。我正在使用 Moq 框架。我正在尝试使用如何在单元测试中模拟 RestSharp 便携式库中的代码来模拟 RestClient。但是我无法弄清楚如何将 RestClient 注入生成的客户端。

标签: c#moqswagger-codegen

解决方案


生成的 swagger 客户端将是一个部分类。
为客户端添加一个部分类并提取您要模拟的方法。
假设您要模拟 Get by id 方法。

public interface IApiClient
{
    Task<Item> GetItemByIdAsync(int id);
}

public partial class swaggerClient: IApiClient
{
    
}

在您的测试代码中,您必须使用接口进行模拟:

var mock= new Mock<IApiClient>();
mock.Setup(r => r.GetItemByIdAsync(It.IsAny<int>()))
      .ReturnsAsync((int id) => new Item(id));
var client = mock.Object;

祝测试愉快!


推荐阅读