Как мне издеваться над методом GetValues ​​() в System.Data.IDataReader? - PullRequest
5 голосов
/ 28 ноября 2008

Как мне издеваться над методом 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
   ...
}

1 Ответ

9 голосов
/ 28 ноября 2008

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

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...