예제 #1
0
        public void WithoutReflectionBasedDestructurer_CustomExceptionIsNotLogged()
        {
            // Arrange
            var exception = new DictNonScalarKeyException();
            var options   = new DestructuringOptionsBuilder().WithoutReflectionBasedDestructurer();

            // Act
            var rootObject = LogAndDestructureException(exception, options);

            // Assert
            rootObject.Properties().Should().NotContain(x => x.Name == "Properties");
        }
예제 #2
0
        public void WhenExceptionContainsDictionaryWithNonScalarValue_ShouldNotThrow()
        {
            // Arrange
            var exception = new DictNonScalarKeyException();

            exception.Reference.Add(new List <int>()
            {
                1, 2, 3
            }, "VALUE");

            // Act
            var result = LogAndDestructureException(exception, new DestructuringOptionsBuilder());

            // Assert
            var exceptionDetails  = ExtractExceptionDetails(result);
            var referenceProperty = exceptionDetails.Should().BeOfType <JObject>().Which
                                    .Properties().Should().ContainSingle(x => x.Name == "Reference").Which;

            var referenceObject = referenceProperty.Value.Should().BeOfType <JObject>().Which;
            var kvp             = referenceObject.Properties().Should().ContainSingle()
                                  .Which.Should().BeOfType <JProperty>()
                                  .Which.Name.Should().Be("System.Collections.Generic.List`1[System.Int32]");
        }