2017-01-07 2 views
-1

私はユニットテストにMoqを使用しています。私は、このインタフェースがあります、私は私のユニットテストコードでMoqモックコールの設定方法の例外

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) 
を言って例外を取得

引数の数が一致していることを確認しましたが、なぜこの例外が発生するのかわかりません。

ありがとうございます。

+0

を解決する

mockInterface.Setup(w => w.MyMethod(It.IsAny<int>(), It.IsAny<string>(), It.IsAny<int>(), It.IsAny<bool>())) .ReturnsAsync(new AClass()); 

。私はあなたの問題を再現することができないので、他のすべてがそうであるように思われます。より良い回答が得られるように問題を再現する[mcve]を提供してください。 – Nkosi

答えて

1

setupに返信文を指定していません。

にコードを変更し

:これは別にarg2のの既定値は、文字列(「」またはnull)とない(0)であるべきという事実から、あなたの問題

関連する問題