如何在引发事件时更改Moq对象值

时间:2017-05-09 12:17:24

标签: c# moq

我有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);

1 个答案:

答案 0 :(得分:-1)

我认为您可以使用SetupAllProperties()函数执行此操作。看到: How to assign values to properties in moq?

然后,您可以将新状态分配给moq对象属性。