我試圖嘲諷通用方法,並且它不按預期方式工作。Moq - 嘲諷通用方法的正確設置
我有這樣的服務定義
public interface ICommandHandlerFactory {
ICommandHandler<T> GetHandler<T>() where T : ICommand;
}
和這個起訂量設置
var handler = new TestCommandHandler();
var handlerFactory = Mock.Of<ICommandHandlerFactory>(o =>
o.GetHandler<TestCommand>() == handler);
如果我請模擬GetHandler
方法與特定的類型例如GetHandler<TestCommand>
一切都按預期工作,並返回TestCommandHandler
類的實例。
但是,如果模擬被注入到另一個泛型類
public class CommandBus {
private ICommandHandlerFactory _handlerFactory;
public ICommandHandler GetHandler<T>(T command) where T : ICommand {
return _handlerFactory.GetHandler<T>();
}
}
下面的代碼返回null
var command = new TestCommand();
return commandBus.GetHandler(command);
我應該如何設置起訂量,即使在這種情況下返回正確的處理程序?
不,我沒有,因爲我想測試我的CommandBus實現,所以我不能嘲笑它。 –