2008-11-27 3 views
5

Как мне высмеять метод GetValues ​​() в System.Data.IDataReader?Как мне высмеять метод GetValues ​​() в System.Data.IDataReader?

Этот метод изменяет массив объектов, переданных ему, поэтому он не может просто вернуть издеваемое значение.

private void UpdateItemPropertyValuesFromReader(object item, IDataReader reader) 
{ 
    object[] fields = new object[ reader.FieldCount ]; 
    reader.GetValues(fields); //this needs to be mocked to return a fixed set of fields 


    // process fields 
    ... 
} 

ответ

9

Вам необходимо использовать метод Expect.Do(), который принимает делегат. этот делегат тогда должен «сделать» что-то вместо кода вызова. Поэтому напишите делегат, который заполняет переменную полей для вас.

private int SetupFields(object[] fields) 
{ 
    fields[ 0 ] = 100; 
    fields[ 1 ] = "Hello"; 
    return 2; 
} 

[Test] 
public void TestGetValues() 
{ 
    MockRepository mocks = new MockRepository(); 

    using (mocks.Record()) 
    { 
     Expect 
      .Call(reader.GetValues(null)) 
      .IgnoreArguments() 
      .Do(new Func<object[], int>(SetupField)) 
    }  

    // verify here 
} 
+1

Я замечаю вашу маленькую опечатку, но я считаю, что это то, что мне нужно! спасибо – D3vtr0n 2008-11-27 22:23:56

Смежные вопросы