Ошибка компиляции при попытке смоделировать универсальный метод с Moq - PullRequest
1 голос
/ 29 сентября 2010

У меня есть метод, который я хотел бы смоделировать:

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 Ответ

6 голосов
/ 29 сентября 2010

попробуйте это (добавление скобок, поскольку It.IsAny<TValue> - это метод):

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