У меня есть этот интерфейс:Как издеваются интерфейс, которые принимают аргумент типа и вернуть еще один inteface
public interface IViewModelCache
{
IViewModel GetViewModel(Type viewModelType);
}
И я насмешливый его с этим кодом:
var cacheMock = Mock.Of<IViewModelCache>();
Mock.Get(cacheMock)
.Setup(cache => cacheMock.GetViewModel(typeof(IViewModel)))
.Returns(Mock.Of<IViewModel>());
Но он бросает
«Указанный способ не поддерживается».,
что не так?
Стек трассировки:
на Moq.Mock.FluentMockVisitor.VisitMember (MemberExpression узел)
в Moq.Mock.FluentMockVisitor.Accept() в Moq.Mock.FluentMockVisitor.Accept (Expression выражение, Mock mock)
at Moq.Mock.GetInterceptor (Expression fluentExpression, Mock mock)
at Moq.Mock. <> c__DisplayClass65_02.<Setup>b__0() at Moq.PexProtector.Invoke[T](Func
1 функция) при Moq.Mock.Setup [T, TResult] (Тестовая модель 11 mock, Expression
выражение, Состояние состояние) при Moq.Mock выражение)
Я также попытался что:
Mock.Get(cacheMock)
.Setup(cache => cacheMock.GetViewModel(It.IsAny<Type>()))
.Returns(Mock.Of<IViewModel>());
И один:
Mock.Get(cacheMock)
.Setup(cache => cacheMock.GetViewModel(It.IsAny<Type>()))
.Returns(new Mock<IViewModel>().Object);
И т вызывает одно и то же исключение.
Вы можете разместить стек вызовов, за исключением? –
@PatrickQuirk, я разместил его в вопросе –