5 Stimmen

Wie spiele ich die Methode GetValues() in System.Data.IDataReader nach?

Wie spiele ich die Methode GetValues() in System.Data.IDataReader nach?

Diese Methode ändert das Array der übergebenen Objekte, so dass sie nicht einfach einen gespiegelten Wert zurückgeben kann.

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

9voto

Ben Laan Punkte 2588

Sie müssen die Methode Expect.Do() verwenden, die einen Delegaten annimmt. Dieser Delegat muss dann anstelle des aufrufenden Codes etwas "tun". Schreiben Sie daher einen Delegaten, der die Feldvariable für Sie auffüllt.

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
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X