Rhino Mocks:如何模拟ADO.NET的DataRow?

时间:2020-03-06 14:57:22  来源:igfitidea点击:

ADO.NET具有臭名昭著的DataRow类,我们无法使用new实例化该类。现在这是一个问题,我发现需要使用Rhino Mocks对其进行模拟。

有谁知道我该如何解决这个问题?

解决方案

任何时候我无法嘲笑某些东西(与Rhino相比,我更喜欢MoQ,但是那不是重点),我必须围绕它进行编码。

从我的角度来看,我们只有两种选择。支付可以模拟ANY类的高级框架(如TypeMock),或者为未被编写为模拟的类编写包装器。

它在框架中处于令人沮丧的状态。在1.1天内,TDD并不是什么大问题。

我很好奇为什么需要模拟DataRow。有时,我们可能会因模拟而陷入困境,而忘记使用真实的东西可能是一样谨慎的做法。如果要遍历数据行,则可以简单地使用一个辅助方法实例化一个,并将其用作模拟中的返回值。

SetupResult.For(someMockClass.GetDataRow(input)).Return(GetReturnRow());

public DataRow GetReturnRow()
{
    DataTable table = new DataTable("FakeTable");
    DataRow row = table.NewRow();
    row.value1 = "someValue";
    row.value2 = 234;

    return row;
}

如果这不是我们遇到的情况,那么我将需要一些示例代码来弄清楚我们要做什么。

我也为此使用Typemock隔离器,它可以模拟其他模拟框架无法进行的操作。