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