我有以下的接口和類:如何配置對象,並重寫配置
public interface ILoggingService { ... }
public class LoggingService {
public LoggingService(ILoggingRepository loggingRepository) { ... }
...
}
public interface ILoggingRepository { ... }
public class DatabaseLoggingRepository {
public DatabaseLoggingRepository(string ConnectionString) { ... }
...
}
public class FileLoggingRepository {
public FileLoggingRepository(string LogFilePath) { ... }
...
}
我重構我的軟件使用統一的IoC框架,並正在尋找一種方式來傳遞特定的配置每個ILoggingRepository實現。
我認爲最好的方法是將DatabaseLoggingRepository和FileLoggingRepository的構造函數改爲根本沒有參數,並讓它們通過某個配置文件進行配置。但是,由於我的驗收測試,我需要一種簡單的方法來在運行測試時覆蓋這些設置。
我在正確的軌道上,如果我在,我應該使用哪些配置文件?其他方式也是受歡迎的。
我的第一個想法是:a。調試和發佈版本有一個單獨的配置文件。灣使用預處理器指令來決定使用哪個配置:'#if DEBUG''//使用調試配置.'#else''//使用官方配置'#endif' –
這是**甚至沒有關閉**適當的IoC解決方案。如果沒有別的,我希望我的單元測試能夠成功,無論它們是在Debug還是Release配置中運行。 –
不幸的是我需要在同一個測試夾具的運行過程中有這兩個不同的設置。第一個測試使用正確的ConnectionString測試行爲,下一個測試使用錯誤的ConnectionString運行。 –