如何模拟idatareader.nextresult?

发布于 2025-02-08 08:26:04 字数 492 浏览 1 评论 0原文

我有一个存储过程,可以返回两个结果集。我在生产代码中这样处理这样的处理:

Rdr = Cmd.ExecuteReader();
while (Rdr.Read())
{
    // process first resultset
}
Rdr.NextResult();
while (Rdr.Read())
{
    // process second resultset
}

我不确定应该如何嘲笑这一点(使用量量)。

在测试单个结果集存储过程时,我的测试代码看起来像这样:

DataTableReader testDataReader = testData.CreateDataReader();  //testData is a DataTable
commandMock.Setup(m => m.ExecuteReader()).Returns(testDataReader)

如何设置模拟以模拟第二个结果集?

I have a stored procedure which returns two resultsets. I process it like this in my production code:

Rdr = Cmd.ExecuteReader();
while (Rdr.Read())
{
    // process first resultset
}
Rdr.NextResult();
while (Rdr.Read())
{
    // process second resultset
}

I'm not sure how this should be mocked (using Moq).

When testing single resultset stored procedures, my test code looks like this:

DataTableReader testDataReader = testData.CreateDataReader();  //testData is a DataTable
commandMock.Setup(m => m.ExecuteReader()).Returns(testDataReader)

How do I setup my mocks to mock the second resultset?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦回旧景 2025-02-15 08:26:04

您可以将它们放入数据集中并在其上创建读者

var dataset = new DataSet();
dataset.Tables.Add(testData1);
dataset.Tables.Add(testData2);
var testDataReader = dataset.CreateDataReader();
commandMock.Setup(m => m.ExecuteReader()).Returns(testDataReader)

You can put them into a DataSet and create a reader over that

var dataset = new DataSet();
dataset.Tables.Add(testData1);
dataset.Tables.Add(testData2);
var testDataReader = dataset.CreateDataReader();
commandMock.Setup(m => m.ExecuteReader()).Returns(testDataReader)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文