2
我有ASP.NET Core API。我已经通过文档here了解如何在asp.net核心中进行集成测试。该示例设置了一个测试服务器,然后调用控制器方法。
但是我想直接测试一个特定的类方法(而不是控制器方法)?例如:解决ASP.NET Core集成测试中的依赖关系
public class MyService : IMyService
{
private readonly DbContext _dbContext;
public MyService(DbContext dbContext)
{
_dbContext = dbContext;
}
public void DoSomething()
{
//do something here
}
}
当测试开始我想startup.cs
被称为所以所有的依赖关系将会得到注册。 (如dbcontext)但我不确定在集成测试中如何解决IMyService
?
注意:我想直接测试DoSomething()
方法的原因是因为此方法不会被任何控制器调用。我在此API中使用Hangfire
进行后台处理。 Hangfire的后台处理工作将会调用DoSomething()
方法。因此,对于集成测试,我希望避免使用Hangfire,并直接致电DoSomething()
方法
我用变种服务=(IMyService)_server.Host.Services.GetService(typeof运算(IMyService)); – LP13
这是一样的,扩展方法更方便,因为您不需要进行强制类型转换或执行任何空值检查(如果服务无法解析,则返回GetRequiredService,因此名称中必须包含**) – Tseng
:)这就是为什么我无法找到它_server.Host.Services',帮助 – LP13