Ejemplo n.º 1
0
        public void Test_ThrowsOnInnerException()
        {
            // Arrange
            var queryMock = new Mock <IQuery <int, int> >();

            queryMock.Setup(x => x.Execute(It.IsAny <int>())).Throws(new ArgumentException("Test exception"));

            var loggerMock = new Mock <ILogger <ErrorHandlingQueryDecorator <int, int> > >();
            var decorator  = new ErrorHandlingQueryDecorator <int, int>(queryMock.Object, loggerMock.Object);

            // Act
            // Assert
            Assert.Throws <ArgumentException>(() => decorator.Execute(2));
            queryMock.Verify(x => x.Execute(It.IsAny <int>()), Times.Once);
            loggerMock.Verify(l => l.Log(
                                  LogLevel.Error,
                                  It.IsAny <EventId>(),
                                  It.IsAny <It.IsAnyType>(),
                                  It.IsAny <ArgumentException>(),
                                  (Func <It.IsAnyType, Exception, string>)It.IsAny <object>()), Times.Once);
        }
Ejemplo n.º 2
0
        public void Test_ReturnsCorrectValueOnNoException()
        {
            // Arrange
            int expected  = 5;
            var queryMock = new Mock <IQuery <int, int> >();

            queryMock.Setup(x => x.Execute(It.IsAny <int>())).Returns(expected);

            var loggerMock = new Mock <ILogger <ErrorHandlingQueryDecorator <int, int> > >();
            var decorator  = new ErrorHandlingQueryDecorator <int, int>(queryMock.Object, loggerMock.Object);

            // Act
            var result = decorator.Execute(2);

            // Assert
            Assert.Equal(expected, result);
            queryMock.Verify(x => x.Execute(It.IsAny <int>()), Times.Once);
            loggerMock.Verify(l => l.Log(
                                  It.IsAny <LogLevel>(),
                                  It.IsAny <EventId>(),
                                  It.IsAny <It.IsAnyType>(),
                                  It.IsAny <ArgumentException>(),
                                  (Func <It.IsAnyType, Exception, string>)It.IsAny <object>()), Times.Never);
        }