gpt4 book ai didi

asp.net-core - 在 ASP.NET Core 中解决集成测试中的依赖项

转载 作者:行者123 更新时间:2023-12-01 23:03:29 25 4
gpt4 key购买 nike

我有 ASP.NET Core API。我已经浏览过文档 here这显示了如何在 asp.net core 中进行集成测试。该示例设置了一个测试服务器,然后调用 Controller 方法。
但是我想直接测试特定的类方法(不是 Controller 方法)?例如:

  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()方法直接,因为此方法不会被任何 Controller 调用。我正在使用 Hangfire在此 API 中进行后台处理。 Hangfire 的后台处理作业会调用 DoSomething()方法。所以对于集成测试我想避免使用 Hangfire 直接调用 DoSomething()方法

最佳答案

您已经拥有 TestServer当您运行集成测试时,您可以从这里轻松访问应用程序范围的容器。由于显而易见的原因,您无法访问 RequestServices(它仅在 HttpContext 中可用,每个请求创建一次)。

var testServer = new TestServer(new WebHostBuilder()
.UseStartup<Startup>()
.UseEnvironment("DevelopmentOrTestingOrWhateverElse"));

var myService = testServer.Host.Services.GetRequiredService<IMyService>();

关于asp.net-core - 在 ASP.NET Core 中解决集成测试中的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43456243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com