moq returning dataReader



我对moq/mocking有一个奇怪的体验。

我试图模拟数据进入一个方法,这样我就不必在测试时有数据库可用。

所以我加载了一些以前序列化的数据。将它加载到一个dataTable中,然后从那里创建一个数据阅读器,因为我的业务层方法需要一个数据阅读器。

然后为我的数据层创建一个模拟。并将特定方法的返回值设置为我的新数据阅读器。

然后我将模拟数据层设置(注入)到业务层中,以便它可以在时间到来时完成返回数据的工作。

var dataTable = DataSerialisation.GetDataTable("C:\data.xml");
IDataReader reader = dataTable.CreateDataReader();
var mock = new Mock<IRetailerDal>();
mock.Setup(x => x.ReadRetailerDetails("00")).Returns(reader);
retailersBusinessLayer.RetailerDal = mock.Object;
var r = retailersBusinessLayer.GetRetailerDetail("00");

现在. .当"GetRetailerDetail"被调用时,它基本上会到达"while(data.Read())"并崩溃,但只是偶尔。我得到了异常:

System.InvalidOperationException : DataTableReader is invalid for current DataTable 'Table1'.

其他时候,它可以读取一些列的数据,但其他列不存在。(这必须与我的序列化方法有关)

好吧,这不是一个令人满意的答案,但是代码现在可以工作了…

与此类似…在那里面找不到理由。

无论如何……如上所述,问题发生在我的GetRetailerDetail方法中,其中代码击中而(data.Read())它抛出错误…

修复. .更改数据读取器变量的名称。也就是说,以前是"data",现在是"data2"。

相关内容

  • 没有找到相关文章

最新更新