2008-11-27 15 views
5

Làm cách nào để thử phương thức GetValues ​​() trong System.Data.IDataReader?Làm cách nào để thử phương thức GetValues ​​() trong System.Data.IDataReader?

Phương pháp này thay đổi mảng đối tượng được truyền cho nó, do đó, nó không thể đơn giản trả lại giá trị được giả mạo.

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

Trả lời

9

bạn cần sử dụng phương thức Expect.Do() để lấy đại biểu. đại biểu này sau đó cần phải 'làm' một cái gì đó, thay cho mã gọi. Vì vậy, hãy viết một đại biểu để điền biến trường cho bạn.

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

Tôi nhận thấy lỗi đánh máy nhỏ của bạn, nhưng tôi tin rằng đây là những gì tôi cần! cảm ơn bạn – D3vtr0n

+0

Tôi không thể đăng

+0

@Ben Ahh bạn phải yêu tường lửa. –