c# - .NetCore 启动配置的单元测试失败
问题描述
我有一个使用 .NetCore 创建的 Windows 服务应用程序。我想为服务方法创建一些单元测试。
启动类看起来像这样
public class Startup
{
public static IConfiguration Configuration;
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
}
}
需要测试的类
public class ModelConsumer : IModelConsumer
{
private readonly IProcessHandler _processHandler;
public ModelConsumer(IIProcessHandler processHandler)
{
_processHandler = processHandler;
}
public void OnMessageReceived(ModelDto model)
{
var exportFolder = Startup.Configuration["ExportFolder"];
// do actions
}
}
测试类
[TestClass]
public class ModelConsumerTests
{
[TestMethod]
public void OnMessageReceived()
{
var processHandler = new Mock<IProcessHandler>();
var modelConsumer = new ModelConsumer(processHandler.Object);
var config = InitConfiguration();
var _exportFolder = config["ExportFolder"];
modelConsumer.OnMessageReceived(new ModelDto());
// verify mock call actions
}
public static IConfiguration InitConfiguration()
{
var config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
return config;
}
}
配置中缺少某些内容,因此测试可以成功运行吗?
解决方案
它在测试项目appsettings.json
的bin/
文件夹中。因此,您必须将其复制到测试项目中/创建一个新项目,并确保将其复制到构建时的输出中。
推荐阅读
- python - 分类数据不能 >1 维
- java - xml和json的根元素的序列化区别
- python - 三角表达式中的 Sympy Collect()
- nosql - 如何使用 Oracle NoSQL 数据库云服务 Python SDK 将 TTL 添加到现有表?
- angular - 如何使自定义 AsyncValidatorFn 仅在用户输入完数据后才运行
- swift - swift 常量推断为具有类型 (),这可能是出乎意料的
- sql - (HIVE)如何按日期过滤,过去 30 天?
- reactjs - 在开关不起作用时将 Material UI 标签更改为白色
- pandas - 如何为日期时间值设置两周间隔
- c - 为什么我的汇编代码比 C 实现慢得多