如何使用Mockoon与Nunit为.NET6 Web API单元测试模拟API调用
你的NUnit + .NET 6 Web API测试问题解决方案
1. 模拟API调用与Mockoon的适用性
完全可以用Mockoon实现API调用的模拟——它本身就是专为快速搭建Mock API设计的工具,刚好匹配你移除外部依赖的需求。操作逻辑很直接:
- 用Mockoon桌面端或CLI创建Mock API:定义接口的路径、HTTP方法、响应状态码和返回体(比如JSON格式的模拟数据),最后把配置导出成
.json文件存在项目里。 - 本地测试时,直接启动Mockoon服务,就能让测试请求指向这个Mock接口。
2. 仅在测试环境指向Mock API的编程实现
核心思路是配置隔离,用.NET的配置系统就能轻松实现,两种常用方式:
- 测试项目配置文件:在测试项目中新增
appsettings.Test.json,把API的基础地址改成Mockoon服务地址(比如http://localhost:3000):
然后在测试类里加载这个配置,初始化API客户端:{ "ApiSettings": { "BaseUrl": "http://localhost:3000" } }var config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.Test.json") .AddEnvironmentVariables() .Build(); var apiClient = new HttpClient { BaseAddress = new Uri(config["ApiSettings:BaseUrl"]) }; - 环境变量优先:代码里优先读取环境变量,测试环境设置Mock地址,生产环境用默认地址:
这样不管是本地测试还是CI环境,只要设置对应的环境变量,就能自动切换到Mock API。var apiBaseUrl = Environment.GetEnvironmentVariable("API_BASE_URL") ?? "https://prod-api.example.com"; var apiClient = new HttpClient { BaseAddress = new Uri(apiBaseUrl) };
3. GitHub Actions中的Mockoon自动化配置
利用Mockoon CLI就能在CI环境中自动部署Mock服务,步骤如下(写在你的GitHub Actions yaml文件里):
- 安装Mockoon CLI:
- name: 安装Mockoon CLI run: npm install -g @mockoon/cli - 后台启动Mock服务,指定你的Mock配置文件路径:
- name: 启动Mockoon API服务 run: mockoon-cli start --data ./MockConfigs/MyApiMock.json --port 3000 --daemon - 设置环境变量让测试指向Mock地址,然后运行NUnit测试:
- name: 设置Mock API地址 run: echo "API_BASE_URL=http://localhost:3000" >> $GITHUB_ENV - name: 运行NUnit测试 run: dotnet test --configuration Release
4. VS Code下的配置(无需Visual Studio工具)
你用VS Code创建的项目完全不需要依赖Visual Studio的特定工具,直接做这几步就行:
- 本地测试时,在项目根目录新建
.env文件,写入API_BASE_URL=http://localhost:3000,运行dotnet test时会自动读取这个环境变量。 - 也可以在VS Code的
launch.json里添加测试配置,直接设置环境变量:{ "version": "0.2.0", "configurations": [ { "name": ".NET 测试", "type": "coreclr", "request": "launch", "program": "dotnet", "args": ["test"], "env": { "API_BASE_URL": "http://localhost:3000" } } ] } - 把Mockoon的配置文件加入Git仓库,方便团队成员共享Mock配置。
内容的提问来源于stack exchange,提问作者usagibear
相关产品推荐
相关产品推荐

