.NET MOQ 返回不同的结果
.NET MOQ returning a different result
我正在尝试做一个简单的测试,模拟 sum 方法。
我有一个接口:
public interface ISumSomething
{
int Sum(params int[] values);
}
一个class使用这个接口:
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);
}
}
和测试class:
[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
,但在我的最小起订量中,我正在设置 4
。为什么会这样?
在你的 Setup
中你说 IsAny(1,2)
,这些参数与 Execute
上的参数不匹配 2,2
您应该改用:
instance.Setup(moq => moq.Sum(It.IsAny<int[]>()).Returns(4));
(有关详细信息,请参阅 Setup Method With Params Array)
我正在尝试做一个简单的测试,模拟 sum 方法。
我有一个接口:
public interface ISumSomething
{
int Sum(params int[] values);
}
一个class使用这个接口:
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);
}
}
和测试class:
[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
,但在我的最小起订量中,我正在设置 4
。为什么会这样?
在你的 Setup
中你说 IsAny(1,2)
,这些参数与 Execute
上的参数不匹配 2,2
您应该改用:
instance.Setup(moq => moq.Sum(It.IsAny<int[]>()).Returns(4));
(有关详细信息,请参阅 Setup Method With Params Array)