模拟Swagger Codegen生成的api客户端

时间:2019-04-18 19:54:14

标签: c# moq swagger-codegen

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

1 个答案:

答案 0 :(得分:0)

生成的 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;

测试愉快!