public void ObserversAreNotifiedWhenStateChanges_TestObserver_ObserverNotified() { //Arrange var spectatorMock = new Mock <IObserver>(); var spectator2Mock = new Mock <IObserver>(); var monkeyName = "Singe1"; var monkey = new Monkey(monkeyName); var trickName = "Salto"; var trickType = TrickType.Acrobatie; var trick = new Trick(trickName, trickType); monkey.Attach(spectatorMock.Object); monkey.Attach(spectator2Mock.Object); //Act - Assert monkey.PerformTrick(trick); spectatorMock.Verify(x => x.Update(monkey, trick), Times.Once); spectator2Mock.Verify(x => x.Update(monkey, trick), Times.Once); monkey.Detach(spectator2Mock.Object); spectator2Mock.Invocations.Clear(); monkey.PerformTrick(trick); spectatorMock.Verify(x => x.Update(monkey, trick), Times.Exactly(2)); spectator2Mock.Verify(x => x.Update(monkey, trick), Times.Never); }
public void RemoveObserver_TestSpectator_SpectatorNotNotified() { //Arrange var monkey = new Monkey(monkeyName); var spectatorMock = new Mock <IObserver>(); monkey.Attach(spectatorMock.Object); monkey.Detach(spectatorMock.Object); //Act monkey.PerformTrick(trick); //Assert spectatorMock.Verify(x => x.Update(monkey, trick), Times.Never); }