2016-06-25 8 views
0

私はsumメソッドを嘲笑して簡単なテストをしようとしています。.NET MOQが別の結果を返す

私はインターフェイスがあります。このインタフェースを使用

public interface ISumSomething 
{ 
    int Sum(params int[] values); 
} 

クラス:

public class CallSum 
{ 
    public CallSum(ISumSomething sumSomething) 
    { 
     this.SumSomething = sumSomething; 
    } 

    private ISumSomething SumSomething { get; set; } 

    public int Execute(params int[] values) 
    { 
     return this.SumSomething.Sum(values); 
    } 
} 

とテストクラス:

[TestMethod] 
    public void Test_Sum_Method() 
    { 
     // Creates MOQ. 
     var instance = new Mock<ISumSomething>(); 

     // Setup de MOQ. 
     instance.Setup(moq => moq.Sum(It.IsAny(1,2)).Returns(4)); 

     // Instance the object. 
     var sum = new CallSum(instance.Object); 

     // Execute the operation. 
     var result = sum.Execute(2, 2); 

     // Check the result. 
     Assert.AreEqual(4, result); 
    } 

私が呼ぶときの問題は、ですExecuteメソッドは、0をreturingしていますが、MOQでは4を設定しています。なぜこれが起こるのですか?で

+0

'Returns()'コールは適切な場所にありますか? –

答えて

2

Setupあなたはこれらの引数は、あなたが代わりに使用されなければならない2,2

あるExecuteに引数を一致していない、IsAny(1,2)言う:

instance.Setup(moq => moq.Sum(It.IsAny<int[]>()).Returns(4)); 

(詳細はSetup Method With Params Arrayを参照してください)

+0

それは働いて、ありがとう –

関連する問題