【发布时间】:2014-12-23 18:28:00
【问题描述】:
我正在尝试模拟一个泛型方法,但它没有按预期工作。
我有这个服务定义
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 类的实例。
但是如果mock被注入到另一个泛型类中
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);
即使在这种情况下,我应该如何设置 Moq 以返回正确的处理程序?
【问题讨论】:
-
也许这个问题也有帮助:stackoverflow.com/questions/20072429/…