20 Feb
2012

NuGet Project Uncovered: DumpToText

Category:UncategorizedTag: :

If you are coming to this series of posts for the first time you might check out my introductory post for a little context.

NOTE: this project is one I created and as it turns out this has now become its introductory post.

DumpToText is a single C# extension I wrote a little while back. The inspiration from this came from the need to view the values of an object graph quickly and easily during a TDD session.

Have you ever been doing TDD and something isn?t working quite as expected? Would it be nice to just dump out the values of an object quickly without having to spin up the debugger?

The inspiration for this project came from an amazing feature of LINQPad. If you have ever used LINQPad then you?re aware of the amazing ability for it to take any object and create a view of it?s data. Take the simple anonymous type below.

image_thumb2_thumb

Now wouldn?t it be great to have that ?.Dump()? extension method at hand anywhere in your code and during a TDD session?

That?s why I create DumpToText.

Now if I have a test as follows and want to see it?s data. I can use the ?.DumpToText()? extension method to have it print out an ASCII based representation of the object graph.

image_thumb4_thumb

image_thumb6_thumb

By default this just uses the System.Diagnostics.Trace(?) to write the output to, but you can override the ?write? implementation by giving your own delegate as shown below.

image_thumb8_thumb

The below shows an example of a nested object that also has an array of items.

image_thumb14_thumb

image_thumb13_thumb1

Anyone out there using ApprovalTests? (You can get it on NuGet)

I?ve not taken the chance to use ApprovalTests yet in a project, but I have a strong feeling that my DumpToText helper could be very useful when leveraged in conjunction with ApprovalTests. If anyone out there is using ApprovalTests, I?d love to hear how it?s going, and if you think that DumpToText would be useful there.

Find me

RSS
Facebook
LinkedIn

Disclaimer

The opinions and content expressed here are my own and not those of my employer.