模拟位于父对象上的模拟列表



我正在使用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);

最新更新