我正在使用Moq进行一些单元测试,我想做相当于:
Location location = new Location();
LocationTimes locationTimes = new LocationTimes();
location.LocationTimes.Add(locationTimes);
所以我试了这个:
var mockLocation = new Mock<Location>();
var mockLocationTime = new Mock<LocationTimes>();
mockLocationTime.SetupProperty(f => f.isEarlyHoursSupported, true);
mockLocationTime.SetupProperty(f => f.isEarlyHoursSupportedManual, true);
var mockLocationTimeList = new List<Mock<LocationTimes>>();
mockLocationTimeList.Add(mockLocationTime);
this.mockLocation1 = new Mock<Location>();
mockLocation1.SetupProperty(f => f.LocationTimes, mockLocationTimeList);
。但我在最后一行收到错误,因为 mockLocationTimeList 现在是 moqs 列表。
我应该怎么做?
这应该可以为您解决问题。
var mockLocation = new Mock<Location>();
var mockLocationTime = new Mock<LocationTimes>();
mockLocationTime.SetupProperty(f => f.isEarlyHoursSupported, true);
mockLocationTime.SetupProperty(f => f.isEarlyHoursSupportedManual, true);
var mockLocationTimeList = new List<LocationTimes>();
mockLocationTimeList.Add(mockLocationTime.Object);
this.mockLocation1 = new Mock<Location>();
mockLocation1.SetupProperty(f => f.LocationTimes, mockLocationTimeList);
现在List
实际上是一个List<LocationTimes>
但每个LocationTimes
对象都是一个模拟。
我能让它工作的唯一方法是这样的:
var mockLocation = new Mock<Location>();
var mockLocationTime = new Mock<LocationTimes>();
mockLocationTime.SetupProperty(f => f.isEarlyHoursSupported, true);
mockLocationTime.SetupProperty(f => f.isEarlyHoursSupportedManual, true);
this.mockLocation1 = new Mock<Location>();
mockLocation1.SetupProperty(f => f.LocationTimes, new List<LocationTimes>());
mockLocation1.Object.LocationTimes.Add(mockLocationTime.Object);