2017-05-09 46 views
0

我有一個模擬對象ttLocILocation。我已將其狀態值設置爲LocationState.Available。 我有一個名爲UpdateLocationState的方法,它將更新我正在編寫測試用例的狀態。 當狀態更新時引發事件。如何在事件發生時更改Moq對象值

當事件發生時,我想更新ttLoc.Object.StateLocationState.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); 
+0

已嘗試此答案http://stackoverflow.com/questions/37286783/how-do-i-raise-an-event-when-a-method-is-called-using-moq –

+0

提供[mcve]可以用來正確理解問題。顯示測試中的方法,它如何與模擬進行交互以及所需的行爲。目前還不完全清楚代碼要做什麼。 – Nkosi

+0

@Nkosi我的問題幾乎類似於http://stackoverflow.com/questions/36761339/moq-mock-void-method-that-c​​hanges-a-field-value在這裏我的問題是我無法創建模擬LocationService來設置瞭解@reddy的數據 – reddy

回答

相關問題