我對moq/mocking有一種奇怪的體驗。moq返回dataReader
我試圖模擬數據進入一個方法,所以我不必在測試時間使用adatabase。
因此,我在之前seralised的某些數據中加載。 將其加載到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'.
Othertimes它移動過去認爲,可以讀一些列的數據,但其他列不存在。 (必須用我的序列化方法做)