0

我对起订量/嘲笑有一种奇怪的经历。

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

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

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

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

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'.

有时它会移动过去并可以读取一些列数据,但其他列不存在。(这一定和我的序列化方法有关)

4

1 回答 1

0

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

它类似于this..因为没有找到原因。 这里

无论如何......如上所述,问题出现在我的 GetRetailerDetail 方法中,代码命中while(data.Read())它抛出错误..

修复..更改数据读取器变量的名称..即它是“data”,现在是“data2”..这就是我所做的一切。

于 2011-10-05T08:26:54.137 回答