我有一個webAPI應用程序,它有一個存儲庫層,DTO服務層和WebAPI層。 WebAPI調用DTO調用Repository。如何測試WebAPI控制器?
我的倉庫是這樣開始的:
public class RepositoryService : IRepositoryService
{
private readonly DbContext _db;
public RepositoryService(string connectionString)
{
_db = new DbContext(connectionString);
}
public RepositoryService()
{
_db = new DbContext();
}
我的DTO服務是這樣開始的:
public class DtoService : IDtoService
{
private readonly RepositoryService _repository;
public DtoService(string connectionString)
{
_repository = new RepositoryService(connectionString);
}
public DtoService()
{
_repository = new RepositoryService();
}
我的DbContext看起來是這樣的:
public DbContext() : base("name=TestConnection")
{
}
public DbContext(string connectionString) : base(connectionString)
{
}
此,到目前爲止,允許我可選地定義一個連接字符串,以便在運行測試應用程序時使用。
第一個問題:這種方法看起來好嗎?
現在,我到我的WebAPI層,我不只有一個控制器類。我有一堆不同的控制器。我正在考慮爲每個控制器執行這些構造函數,但是有一個更好的方法可以做到這一點。有些東西告訴我這是依賴注入的地方,但我不確定。
我可以做這樣的事情:
- 爲每個控制器構造像我有我的服務上面
在我的測試中,新的像
VAR每個控制器的一個實例accountController = new AccountController(connectionStringForTesting)
但我知道這是不實用,所以...
第二個問題:實際方法是什麼樣子?