public void Dispose_Sync() { var context = new Mock<SynchronizationContext>(MockBehavior.Strict); context.Setup(_ => _.Send(It.IsAny<SendOrPostCallback>(), It.IsAny<object>())).Callback((SendOrPostCallback c, object s) => c(s)); var item = new Mock<IDisposable>(MockBehavior.Strict); item.Setup(_ => _.Dispose()); var disposable = new DisposableContext(item.Object, context.Object); disposable.Dispose(); context.Verify(_ => _.Send(It.IsAny<SendOrPostCallback>(), It.IsAny<object>()), Times.Once); item.Verify(_ => _.Dispose(), Times.Once); }