對於單元測試,我如何模擬使用工廠的類的依賴關係。嘲笑使用靜態工廠的類的依賴關係
舉例來說,如果我有下面的類:
public class SignalProcessor
{
ISignalFilter signalFilter;
public SignalProcessor()
{
this.signalFilter = SignalFilterFactory.GetInstance();
}
}
現在在SignalProcessor單元測試,我想模擬出ISignalFilter,即使用ISignalFilter的測試版本。如果我使用依賴注入而不是Factory,那麼我可以將一個TestSignalFilter傳遞給SignalProcessor構造函數。但是,如何在工廠情況下模擬ISignalFilter?
您應該考慮使用類似城堡或Unity一個DI框架(如果你尚未使用)。這些框架提供了將工廠外部化爲XML或類的工具(本身可以進行單元測試)。然後你可以只有一個構造函數「public SignalProcessor(ISignalFilter filter)」。 – aquaraga