public async Task ProgressAsync() { var progress = "progress"; var task = taskFactory.Create(Text, t => { t.Progress.Report(progress); SpinWait.SpinUntil(() => mockProgressDialog.Message == progress, TimeSpan.FromMilliseconds(100)); }); task.Run(); mockProgressDialog.Received().Message = progress; // Make sure we do not keep receiving progress reports after the task is done. mockProgressDialog.ClearReceivedCalls(); await Task.Delay(100); Assert.That(mockProgressDialog.ReceivedCalls().Count, Is.LessThanOrEqualTo(1)); }