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

Rob*_*Rob 1 unit-testing moq c#-3.0

我有一个方法我想模仿:

public interface IServiceBus
{
    void Subscribe<T>(ISubscribeTo<T> subscriber) where T : class;
}
Run Code Online (Sandbox Code Playgroud)

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

var mockServiceBus = new Mock<IServiceBus>();
mockServiceBus.Setup(x => x.Subscribe(It.IsAny<ISubscribeTo<SomeType>>));
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试这个时,我得到这个编译错误:

错误65
无法从用法中推断出方法"ServiceBus.IServiceBus.Subscribe(Messaging.ISubscribeTo)"的类型参数.
尝试显式指定类型参数.

我不知道如何解决这个错误.有任何想法吗?或者这种行为不可能用Moq嘲笑?

Jef*_*ata 6

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

mockServiceBus.Setup(x => x.Subscribe(It.IsAny<ISubscribeTo<SomeType>>()));
Run Code Online (Sandbox Code Playgroud)

  • 我觉得真的,真的很愚蠢,因为**结果证明是问题所在.哈哈.哦,那是其中一天.谢谢,就是这样! (2认同)
  • 不用担心,我只知道它,因为我做了同样的事情.不止一次:P (2认同)