[Test] [Category("AutomaticTest")] public void Some_Test() { var mockPublisher = new MockMockSequence has a bug, make sure that there is a call of "VerifyAll()" followed by at least one call to "Verify()" otherwise the MockSequence may not actually be checked!(MockBehavior.Strict); var sequence = new MockSequence(); mockPublisher.InSequence(sequence).Setup(x => x.Start()); mockPublisher.InSequence(sequence).SetupSet(x => x.IsSynchronizing = true); mockPublisher.InSequence(sequence).Setup(x => x.Start()); mockPublisher.InSequence(sequence).Setup(x => x.Complete()); mockPublisher.InSequence(sequence).Setup(x => x.Start()); mockPublisher.InSequence(sequence).Setup(x => x.Complete()); mockPublisher.InSequence(sequence).Setup(x => x.Complete()); mockPublisher.InSequence(sequence).SetupSet(x => x.IsSynchronizing = false); var fakeSyncObserver = new FakeSystemReportersSyncObserver(); var fakeConnectivityObserver = new FakeEventEngineConnectivityObserver(); Monitor Monitor = new Monitor(mockPublisher.Object, fakeSyncObserver, fakeConnectivityObserver); fakeSyncObserver.PublishStateChanged(new SyncEventArgs("1", SyncEnum.ReportSynchronized)); // Start(), IsSynchronizing = true fakeSyncObserver.PublishStateChanged(new SyncEventArgs("2", SyncEnum.ReportSynchronized)); // Start() (IsSynchronizing is already true) fakeSyncObserver.PublishStateChanged(new SyncEventArgs("2", SyncEnum.Completed)); // Complete() ("1" is still syncing) fakeSyncObserver.PublishStateChanged(new SyncEventArgs("2", SyncEnum.ReportSynchronized)); // Start() (IsSynchronizing is already true) fakeSyncObserver.PublishStateChanged(new SyncEventArgs("2", SyncEnum.Completed)); // Complete() ("1" is still syncing) fakeSyncObserver.PublishStateChanged(new SyncEventArgs("1", SyncEnum.Completed)); // Complete(), IsSynchronizing = false ("1" and "2" are both complete now) mockPublisher.VerifyAll(); mockPublisher.Verify(m => m.Fail(), Times.Never()) mockPublisher.Verify(m => m.Start(), Times.Exactly(3)); }
Here is another sample test:
[Test] [Category("AutomaticTest")] public void AnotherSampleTest() { var mockSnmpPublisher = new Mock(MockBehavior.Strict); // Create the MockSequence to validate the call order var sequence = new MockSequence(); // Create the expectations, notice that the Setup is called via InSequence mockSnmpPublisher.InSequence(sequence).Setup( x => x.SendTrap( It.Is (y => y.Equals(StatusOids.Traps.SynchronizationStarted)), It.Is (s => s == true))); mockSnmpPublisher.InSequence(sequence). Setup(x => x.SetVariable(It.Is (y => y.Equals(StatusOids.Variables.IsSynchronizing)), It.Is (y => y.Equals(IsSynchronizing)))); mockSnmpPublisher.InSequence(sequence).Setup( x => x.SendTrap( It.Is (y => y.Equals(StatusOids.Traps.SynchronizationCompleted)), It.Is (s => s == true))); mockSnmpPublisher.InSequence(sequence). Setup(x => x.SetVariable(It.Is (y => y.Equals(StatusOids.Variables.IsSynchronizing)), It.Is (y => y.Equals(IsNotSynchronizing)))); SyncSnmpPublisher SyncSnmpPublisher = new SyncSnmpPublisher(mockSnmpPublisher.Object); SyncSnmpPublisher.Start(); SyncSnmpPublisher.IsSynchronizing = true; SyncSnmpPublisher.Complete(); SyncSnmpPublisher.IsSynchronizing = false; mockSnmpPublisher.VerifyAll(); mockSnmpPublisher.Verify(m => // REMEMBER this will ensure the MockSequence will be checked m.SendTrap(It.Is (y => y.Equals(StatusOids.Traps.SynchronizationCompleted)), It.Is (s => s == true)), Times.Once()); }
No comments:
Post a Comment