4

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

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

4

4 回答 4

12

我很好奇你为什么需要模拟 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;
}

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

于 2008-10-01T01:11:18.440 回答
1

我也为此使用Typemock Isolator,它可以模拟其他模拟框架无法模拟的东西。

于 2009-05-28T11:46:58.707 回答
0

任何时候我不能模拟某些东西(我更喜欢 MoQ 而不是 Rhino,但这不是重点)我必须围绕它编写代码。

在我看来,你只有两个选择。花钱购买一个可以模拟任何类的高级框架,例如 TypeMock,或者编写一个围绕不是为模拟而编写的类的包装器。

它在框架中的一个可悲的状态。在 1.1 天,TDD 并不是一个大问题。

于 2008-10-01T01:05:10.703 回答
0

这对我有用

    private DataRow GetReturnRow()
    {
        DataTable table = new DataTable("FakeTable");
        table.Columns.Add("column_name");

        DataRow row = table.NewRow();
        row["column_name"] = your_value;

        return row;
    }
于 2021-11-10T22:36:16.647 回答