powertools-lambda-dotnet icon indicating copy to clipboard operation
powertools-lambda-dotnet copied to clipboard

Feature request: Support of the assert of the `Logging.Log` buffer when testing

Open coderade opened this issue 1 year ago • 2 comments

Use case

When creating Unit Tests, I want to be able to assert if the messages have been logged on the AWS.Lambda.Powertools.Logging.Logger instance buffer.

This will be helpful to assert in the tests the logged messages for the current logger instance, like is possible with the Amazon.Lambda.TestUtilities.

Is it already possible in some way? And/Or does this feature request make sense?

Solution/User Experience

Currently the Amazon.Lambda.TestUtilities provides the TestLambdaLogger() implementation of the ILambdaLogger that stores all the messages in a buffer and writes the messages to the console.

With this helper we can assert if the message has been logged:

var logger = new TestLambdaLogger();
Assert.Contains("Processed message foobar", logger.Buffer.ToString());

Creating this kind of helper can be a good way to follow for the AWS.Lambda.Powertools.Logging.Logger or creating a method to get the current logger instance.

Alternative solutions

No response

Acknowledgment

coderade avatar Sep 05 '23 13:09 coderade

Thanks for opening your first issue here! We'll come back to you as soon as we can. In the meantime, check out the #dotnet channel on our Powertools for AWS Lambda Discord: Invite link

boring-cyborg[bot] avatar Sep 05 '23 13:09 boring-cyborg[bot]

Thanks for opening the issue @coderade we are experimenting with different approaches: A couple of questions:

  1. How are you logging, can you share a snippet?
  2. Are you using a static Logger, creating a logging instance in the constructor or other?
  3. Are you using ILambdaContext outside the handler?

We are thinking of one approach, if in a Lambda environment (were we have access to context) we will write to the context.Log output so you will have the message in the TestLambdaLogger buffer and you can assert on that.

hjgraca avatar Sep 13 '23 11:09 hjgraca