2008-11-27 13 views
5

Jak kpić z metody GetValues ​​() w System.Data.IDataReader?Jak kpić z metody GetValues ​​() w System.Data.IDataReader?

Ta metoda zmienia tablicę przekazanych do niej obiektów, więc nie może po prostu zwrócić fałszywej wartości.

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

Odpowiedz

9

Musisz użyć metody Expect.Do(), która przyjmuje delegata. ten delegat musi następnie "coś" zrobić zamiast kodu wywołującego. Dlatego napisz delegata, który zapełni dla ciebie zmienną pola.

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

Zauważyłem twoją małą literówkę, ale wierzę, że to jest to, czego potrzebuję! dziękuję – D3vtr0n

+0

Nie mogę opublikować postury

+0

@Ben Ahh, musisz pokochać firewalle. –

Powiązane problemy