public void WhenCommandFailsToRunValidationResultIsUnavailable() { // Prepare string aValidOSVersion = "valid_os_version"; List <string> validOsVersions = new List <string>() { aValidOSVersion }; IConfiguration configuration = MockFactory.ConfigurationWithValidOSVersions(validOsVersions); var powershellCommandRunnerMockFactory = new Moq.Mock <IPowershellCommandRunner>(); powershellCommandRunnerMockFactory.Setup(powershellCommandRunner => powershellCommandRunner.AddScript(It.IsAny <string>())).Verifiable(); PSObject getCimInstanceResult = new PSObject(); string anInvalidOSVersion = "invalid_os_version"; PSMemberInfo versionMember = new PSNoteProperty("version", anInvalidOSVersion); getCimInstanceResult.Members.Add(versionMember); Collection <PSObject> commandResults = new Collection <PSObject> { getCimInstanceResult }; powershellCommandRunnerMockFactory.Setup(powershellCommandRunner => powershellCommandRunner.Invoke()).Throws(new Exception()); // Exercise OSVersionValidation osVersionValidation = new OSVersionValidation(configuration); IValidationResult validationResult = osVersionValidation.ValidateUsing(powershellCommandRunnerMockFactory.Object); // Verify Assert.StrictEqual <Result>(Result.Unavailable, validationResult.Result); }