public void AddDownload() { var ds = new DownloadService(null); var download = new Mock <IDownload>(); var state = DownloadState.Queued; download.Setup(d => d.State).Returns(() => state); download.Setup(d => d.Progress).Callback(() => state = DownloadState.Downloading) .Returns(Observable.Empty <DownloadProgress>()); ds.Add(download.Object); download.Verify(d => d.Start(null), Times.Once); }