我对起订量/嘲笑有一种奇怪的经历。
我试图模拟进入方法的数据,这样我就不必在测试时有可用的数据库。
所以我加载了一些我之前序列化的数据。将其加载到数据表中,然后从那里创建一个数据读取器,因为我的业务层方法需要一个数据读取器。
然后为我的数据层创建一个模拟。并将特定方法的返回值设置为我的新数据读取器。
然后我将我的模拟数据层设置(注入)到我的业务层中,以便它可以在时机成熟时完成返回数据的工作。
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'.
有时它会移动过去并可以读取一些列数据,但其他列不存在。(这一定和我的序列化方法有关)