SerilogSinksInMemory
SerilogSinksInMemory copied to clipboard
`WithException` assertion for comparing logged exception within specific message
suggestion:
var data = new Exception("Example error exception");
_logger.Information(data, "Example error");
InMemorySink.Instance
.Should()
.HaveMessage("Example error with sensitive data")
.WithException(data) //<-- addition
.WithException(assertions=> assertions //<-- another variant
.WithMessage(data.Message)
.WithData("somekey",data["somekey"])
)
Hi @rafek1241
I'm not entirely sure yet on the way this should actually look.
As part of #22 I actually added some extension methods which add HaveErrorMessageWithException<T> as part of the test case.
I'm currently thinking along the lines of adding the following:
private void GivenLogMessaageWithException()
{
var exception = new Exception("BANG BANG!");
exception.Data.Add("some", "property");
_logger.Error(exception, "BANG!");
}
[Fact]
public void GivenLogMessageWithException_NewStyle()
{
GivenLogMessaageWithException();
_inMemorySink
.Should()
.HaveMessage("BANG!")
.Appearing()
.Once()
.WithException<Exception>() // Asserts that there is an exception and that the type matches the expectation
.AndMessage("BANG BANG!");
}
[Fact]
public void GivenLogMessageWithException_NewStyleFullMatch()
{
GivenLogMessaageWithException();
var exception = new Exception("BANG BANG!");
exception.Data.Add("some", "property");
_inMemorySink
.Should()
.HaveMessage("BANG!")
.Appearing()
.Once()
.WithException<Exception>()
.Matching(exception); // This is a shortcut for WithException<Exception>().Subject.Should().BeEquivalentTo(exception)
}
Let me know what you think.