У меня есть метод, который я хочу макет, который принимает массив в качестве аргумента. При реальном вызове метод изменяет этот массив, и результирующий массив будет использоваться далее в коде.
То, что я пытался сделать, это передать массив в вызов mocked-метода, который имел значения, которые были бы действительны при повторном использовании массива. Однако, что я нахожу, так это то, что когда выполняется вызов для смоделированного метода, он не использует массив, указанный мной при настройке макета, вместо использования исходного массива. Есть ли способ обойти эту проблему.
* 1003 например *
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)
Здесь мой тест падает, так как массив по-прежнему является нулевым массивом, объявленным двумя строками выше, а не массивом, который я указал в вызове mocked-метода. Надеюсь, что это объясняет, чего я пытаюсь достичь, и если да, то есть ли в любом случае это сделать. Также был бы открыт для использования RhinoMocks, если бы это можно было сделать таким образом.
Спасибо заранее,
Кев