public void GetHostIdAsync_IfStorageAccountProviderThrowsInvalidOperationException_WrapsException() { // Arrange Mock<IStorageAccountProvider> storageAccountProviderMock = new Mock<IStorageAccountProvider>( MockBehavior.Strict); TaskCompletionSource<IStorageAccount> taskSource = new TaskCompletionSource<IStorageAccount>(); InvalidOperationException innerException = new InvalidOperationException(); taskSource.SetException(innerException); storageAccountProviderMock .Setup(p => p.GetAccountAsync(It.IsAny<string>(), It.IsAny<CancellationToken>())) .Returns(taskSource.Task); IStorageAccountProvider storageAccountProvider = storageAccountProviderMock.Object; IFunctionIndexProvider functionIndexProvider = CreateDummyFunctionIndexProvider(); IHostIdProvider product = new DynamicHostIdProvider(storageAccountProvider, () => functionIndexProvider); CancellationToken cancellationToken = CancellationToken.None; // Act & Assert InvalidOperationException exception = Assert.Throws<InvalidOperationException>( () => product.GetHostIdAsync(cancellationToken).GetAwaiter().GetResult()); Assert.Equal("A host ID is required. Either set JobHostConfiguration.HostId or provide a valid storage " + "connection string.", exception.Message); Assert.Same(innerException, exception.InnerException); }