c# - 模拟 Swagger Codegen 生成的 api 客户端
问题描述
我使用 swagger-codegen 生成了 C# 客户端。目前我正在围绕该客户端编写一个包装器,并希望围绕我的逻辑进行单元测试。但是,我试图弄清楚如何模拟对生成的客户端的调用。我正在使用 Moq 框架。我正在尝试使用如何在单元测试中模拟 RestSharp 便携式库中的代码来模拟 RestClient。但是我无法弄清楚如何将 RestClient 注入生成的客户端。
解决方案
生成的 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;
祝测试愉快!
推荐阅读
- android-studio - 如何将音频添加到 Recycler View 项目
- jupyter-notebook - DevTools 经常出现在 Jupyter Notebook 的编码过程中
- java - 将 Jetty 配置为在运行 war 文件的 web.xml 中的过滤器之前运行自定义过滤器
- computer-vision - 从 DensePose 输出创建 UV 纹理贴图
- java - Spring Boot BatchAcknowledgeingMessageListener
在逗号上拆分消息 - docker - Quarkus:构建本机 docker 映像时出现“未找到封闭方法”错误
- rust - Rust 期货/异步 - 等待奇怪的行为
- laravel - Laravel Mix - 全局混合辅助函数检索错误的路径(使用 SSH 隧道)
- python - 如何在 python 中为 MongoDB 模式自动创建时间戳?
- asp.net - 如何根据用户角色显示/隐藏共享的 _Layout.cshtml 元素