public void WhenCallingMethodSimultaneousThenOnlyOneExecutionOfCallout() { // Arrange var logger = Substitute.For <ILogger <PhotoController> >(); var smartContract = Substitute.For <ISmartContract>(); var ctrl = new PhotoController(logger, smartContract); var url = "https://blockathon.blob.core.windows.net/kentekens/kenteken.jpg"; // Act ctrl.AnalyzePhoto(url); ctrl.AnalyzePhoto(url); // Warning: Naive test coming up while (ctrl.IsBusy) { Thread.Sleep(1000); } // Assert smartContract.Received(1).Callout(Arg.Is <string>(c => c == "XK50HF")); }