Пример #1
0
        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);
        }
Пример #2
0
        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);
        }