rhinomocks:如何模拟ADO.NET';什么是数据行?

rhinomocks:如何模拟ADO.NET';什么是数据行?,.net,ado.net,rhino-mocks,.net,Ado.net,Rhino Mocks,ADO.NET具有臭名昭著的DataRow类,您无法使用new实例化该类。这是一个问题,现在我发现需要使用Rhino mock来模拟它 有人知道我该如何解决这个问题吗?任何时候我都不能嘲笑某件事(我更喜欢MoQ而不是Rhino,但这不是重点),我必须围绕它编写代码 依我看,你只有两个选择。支付一个高级框架的费用,比如可以模拟任何类的TypeMock,或者在没有编写成模拟的类周围编写一个包装器 这是框架内令人悲哀的事态。在1.1天的时间里,TDD并不是一个大问题。我很好奇为什么需要模拟DataRo

ADO.NET具有臭名昭著的DataRow类,您无法使用new实例化该类。这是一个问题,现在我发现需要使用Rhino mock来模拟它


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

任何时候我都不能嘲笑某件事(我更喜欢MoQ而不是Rhino,但这不是重点),我必须围绕它编写代码

依我看,你只有两个选择。支付一个高级框架的费用,比如可以模拟任何类的TypeMock,或者在没有编写成模拟的类周围编写一个包装器


这是框架内令人悲哀的事态。在1.1天的时间里,TDD并不是一个大问题。

我很好奇为什么需要模拟DataRow。有时候,你可能会被抓到去模仿,而忘记了使用真实的东西也是同样谨慎的。如果您正在传递数据行,那么您可以简单地用一个helper方法实例化一个数据行,并将其用作mock上的返回值

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

如果这不是您所处的情况,那么我需要一些示例代码来了解您正在尝试做什么。

我也使用隔离器,它可以模拟其他模拟框架无法模拟的事情。

这是针对我编写的(笨拙的)ORM,我正在测试Dao是否查询我的DBWrapper对象以获取DataRow并从中构建对象。虽然使用mock会更方便,但我想这样做是必须的。是的,这很难。通常我会说,避免完全使用具体类型,而是依赖于某些接口,但您试图完成的工作无法适应这一点。