【发布时间】:2017-02-22 17:32:37
【问题描述】:
我有这个界面:
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(表达式表达式,Mock mock)
在 Moq.Mock.GetInterceptor(Expression fluentExpression, Mock mock)
在 Moq.Mock.c__DisplayClass65_02.<Setup>b__0() at Moq.PexProtector.Invoke[T](Func1 函数)在 Moq.Mock.Setup[T,TResult](Mock1 mock, Expression1 表达式, 条件条件)在 Moq.Mock1.Setup[TResult](Expression1 表达式)
我也试过了:
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,我在问题中发布了它
标签: c# unit-testing moq