【发布时间】:2011-01-18 06:59:28
【问题描述】:
我有一个我想模拟的方法,它需要一个数组作为参数。在实际调用中,该方法将修改此数组,并且生成的数组将在代码中进一步使用。 我试图做的是将数组传递给模拟方法调用,该方法具有在再次使用数组时有效的值。但是我发现当调用模拟方法时,它不使用我在设置模拟时指定的数组,而是使用原始数组,有没有办法解决这个问题。
例如
public interface ITest
{
int Do(int[] values);
}
public void MyTest
{
var testMock = new Mock<ITest>();
int[] returnArray = new int[] {1,2,3};
testMock.Setup(x => x.Do(returnArray)).Returns(0);
MyTestObject obj = new MyTestObject();
obj.TestFunction(testMock.Object);
}
public class MyTestObject
{
.....
public void TestFunction(ITest value)
{
int [] array = new int[3];
value.Do(array);
if (array[0] == 1)
这是我的测试失败的地方,因为数组仍然是上面两行声明的空数组,而不是我在模拟方法调用中指定的数组。希望这能解释我正在努力实现的目标,如果是这样的话,无论如何都会这样做。如果可以这样做,也可以使用 RhinoMocks。
提前致谢,
凯夫
【问题讨论】:
标签: unit-testing mocking rhino-mocks moq