【发布时间】:2017-10-07 18:04:35
【问题描述】:
我有一个模拟对象ttLoc 用于ILocation。我已将其状态值设置为LocationState.Available。
我有一个名为UpdateLocationState 的方法,它将更新我正在为其编写测试用例的状态。
当状态更新时,会引发一个事件。
当事件发生时,我想将ttLoc.Object.State 更新为LocationState.Reserved。
我怎样才能做到这一点?
var ttLoc = new Mock<ILocation>();
ttLoc.Setup(loc => loc.LocationId).Returns("TestLocation");
ttLoc.Setup(state => state.State).Returns(LocationState.Available);
this.ManagerMock.Setup(d => d.SetLocationState(It.IsAny<ILocation>(), It.IsAny<LocationState>())).Raises(f => f.LocationStateChangedEvent += null, new EventArgs<LocationState>(LocationState.Available));
var result = LocationService.UpdateLocationState(ttLoc.Object, LocationState.Reserved);
【问题讨论】:
-
提供一个minimal reproducible example 可以用来正确理解问题。显示被测方法、它如何与模拟交互以及所需的行为。目前尚不完全清楚代码试图做什么。
-
@Nkosi 我的问题与stackoverflow.com/questions/36761339/… 几乎相似这里我的问题是我无法为 LocationService 创建模拟来设置数据
-
@reddy 理解,但您必须显示
ILocation的定义以及LocationService和UpdateLocationState的部分,以便我们向您展示您需要做什么。现在只能猜测它们是如何交互的。 -
@Nkosi 我的问题与stackoverflow.com/questions/36761339/… 相同,唯一的区别是 Sample.Number 是只读属性,它只有 Get 属性,所以当我赋值时它说只读属性。你能帮忙吗我如何在这里模拟只读属性?