尝试使用Moq模拟泛型方法时编译错误

时间:2010-09-29 17:48:39

标签: unit-testing c#-3.0 moq

我有一个我想模仿的方法:

public interface IServiceBus
{
    void Subscribe<T>(ISubscribeTo<T> subscriber) where T : class;
}

为了这个例子,T可以称为SomeType。 现在,我想嘲笑这个,就像这样:

var mockServiceBus = new Mock<IServiceBus>();
mockServiceBus.Setup(x => x.Subscribe(It.IsAny<ISubscribeTo<SomeType>>));

然而,当我尝试这个时,我得到了这个编译错误:

  

错误65
  方法'ServiceBus.IServiceBus.Subscribe(Messaging.ISubscribeTo)'的类型参数   无法从使用中推断出来   尝试指定类型参数   明确。

我不确定如何解决此错误。有任何想法吗?或者这种行为不可能用Moq模拟?

1 个答案:

答案 0 :(得分:6)

试试这个(添加括号,因为It.IsAny<TValue>是一种方法):

mockServiceBus.Setup(x => x.Subscribe(It.IsAny<ISubscribeTo<SomeType>>()));