Использование Moq для общих методов

Совершенно простую ситуацию, но я не могу заставить ее работать. У меня возникла проблема с использованием Moq для имитации универсального метода (в данном случае в интерфейсе ядра Ninject):

T Get<T>();

Я настроил свой фиктивный объект:

Mock<IKernel> mockKernel = new Mock<IKernel>();
        mockKernel.Setup(x => x.Get<IGetUserQuery>()).Returns(new GetUserQuery());

Во время выполнения я получаю следующее исключение:

Expression references a method that does not belong to the mocked object: x => x.Get<IGetUserQuery>(new[] {  })

Есть идеи, почему это бросает? Раньше я без проблем издевался над дженериками в Moq ... бывают ли случаи, когда универсальные насмешки не поддерживаются? Это похоже на простой случай. Единственная проблема заключается в том, что IGetUserQuery, в свою очередь, наследуется от обобщенного типа:

IGetUserQuery : ICommand<UserQueryInput, UserQueryOutput>

Я не вижу, чтобы это создавало проблему, потому что общие типы для этой реализации ICommand статически определены IGetUserQuery, поэтому я сомневаюсь, что это сбивает Moq с толку.

Заранее спасибо

6
задан Thomas 11 July 2011 в 14:07
поделиться