如何在 System.Data.IDataReader 中模拟 GetValues() 方法?

Posted

技术标签:

【中文标题】如何在 System.Data.IDataReader 中模拟 GetValues() 方法?【英文标题】:How do I mock the method GetValues() in System.Data.IDataReader? 【发布时间】:2008-11-27 22:12:59 【问题描述】:

如何模拟 System.Data.IDataReader 中的 GetValues() 方法?

这个方法改变了传递给它的对象数组,所以它不能简单地返回一个模拟值。

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】:

您需要使用带有委托的 Expect.Do() 方法。然后这个委托需要“做”一些事情来代替调用代码。因此,编写一个为您填充字段变量的委托。

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

【讨论】:

我注意到你的小错字,但我相信这就是我需要的!谢谢 @Ben Ahh 你一定会喜欢防火墙。

以上是关于如何在 System.Data.IDataReader 中模拟 GetValues() 方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何在表单提交后保留文本(如何在提交后不删除自身?)

如何在异步任务中调用意图?或者如何在 onPostExecute 中开始新的活动?

在 Avkit 中如何使用这三行代码,以及如何将音乐静音”

如何在 JDBC 中启动事务?

如何在 Fragment 中调用 OnActivityResult 以及它是如何工作的?

如何使用 Firebase 在 Web 上托管 Flutter?它的效果如何?