Moq Mock 类中的 Setup 方法中的异常
exception in Setup method in Moq Mock calss
我正在使用最小起订量进行单元测试。我有这个界面:
public interface IMyInterface
{
Task<AClass> MyMethod(int arg1, string arg2=0, int arg3=1, bool arg4=false);
}
在我的单元测试代码中,我有
var mockInterface = new Mock<IMyInterface>();
mockInterface.Setup(w => w.MyMethod(It.IsAny<int>(), It.IsAny<string>(),
It.IsAny<int>(), It.IsAny<bool>()))
我的单元测试代码可以编译,但是当我 运行 它时,我得到一个异常
System.AggregateException: One or more errors occurred. ---> System.Reflection.TargetParameterCountException: Parameter count mismatch.
at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Delegate.DynamicInvokeImpl(Object[] args)
at Moq.Extensions.InvokePreserveStack(Delegate del, Object[] args)
at Moq.MethodCallReturn`2.Execute(ICallContext call)
at Moq.Interceptor.Intercept(ICallContext invocation)
我已经检查过参数计数是否匹配,但我不确定为什么会出现此异常。
谢谢。
您没有为 setup
指定 return 语句。
将您的代码更改为:
mockInterface.Setup(w => w.MyMethod(It.IsAny<int>(), It.IsAny<string>(),
It.IsAny<int>(), It.IsAny<bool>()))
.ReturnsAsync(new AClass());
这将解决您的问题
我正在使用最小起订量进行单元测试。我有这个界面:
public interface IMyInterface
{
Task<AClass> MyMethod(int arg1, string arg2=0, int arg3=1, bool arg4=false);
}
在我的单元测试代码中,我有
var mockInterface = new Mock<IMyInterface>();
mockInterface.Setup(w => w.MyMethod(It.IsAny<int>(), It.IsAny<string>(),
It.IsAny<int>(), It.IsAny<bool>()))
我的单元测试代码可以编译,但是当我 运行 它时,我得到一个异常
System.AggregateException: One or more errors occurred. ---> System.Reflection.TargetParameterCountException: Parameter count mismatch.
at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Delegate.DynamicInvokeImpl(Object[] args)
at Moq.Extensions.InvokePreserveStack(Delegate del, Object[] args)
at Moq.MethodCallReturn`2.Execute(ICallContext call)
at Moq.Interceptor.Intercept(ICallContext invocation)
我已经检查过参数计数是否匹配,但我不确定为什么会出现此异常。
谢谢。
您没有为 setup
指定 return 语句。
将您的代码更改为:
mockInterface.Setup(w => w.MyMethod(It.IsAny<int>(), It.IsAny<string>(),
It.IsAny<int>(), It.IsAny<bool>()))
.ReturnsAsync(new AClass());
这将解决您的问题