コード例 #1
0
        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);
        }