2008-11-27 13 views
5

¿Cómo me burlo del método GetValues ​​() en System.Data.IDataReader?¿Cómo me burlo del método GetValues ​​() en System.Data.IDataReader?

Este método cambia la matriz de objetos que se le pasan, por lo que no puede devolver simplemente un valor simulado.

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 
    ... 
} 

Respuesta

9

necesita utilizar el método Expect.Do() que toma un delegado. este delegado luego necesita 'hacer' algo, en lugar del código de llamada. Por lo tanto, escriba un delegado que llene la variable de campos por usted.

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

Me di cuenta de su pequeño error tipográfico, pero creo que esto es lo que necesito. gracias – D3vtr0n

+0

No puedo publicar un

+0

@Ben Ahh debes amar los cortafuegos. –

Cuestiones relacionadas