Snapshot Testing in .NET with Storm Petrel


The time period “Snapshot Testing” originates from capturing an precise display snapshot and evaluating it with an anticipated snapshot. Nevertheless, the time period is just not restricted to photographs and extends to different sorts of precise code execution outcomes, comparable to HTML, JSON, XML, PDF, and many others. Usually, Snapshot Unit/Integration Testing includes the next steps in a check methodology:

  • Prepare: Create the anticipated snapshot.
  • Act: Seize the precise snapshot.
  • Assert: Evaluate the anticipated and precise snapshots for equality.

As we all know, the Scand Storm Petrel NuGet packages automate the era/rewriting of anticipated baselines with precise values. Let’s discover what they will do within the context of snapshot values.

Snapshot Testing with Scand.StormPetrel.Generator

The Scand.StormPetrel.Generator NuGet bundle implements automated era/rewriting of any kind of anticipated values stored in C# code. Thus, we are able to conclude:

  • HTML, JSON, XML, and different textual content snapshots will be tracked as C# code values, as seen within the check strategies of the SnapshotTest class based on the documented use instances.
  • Binary snapshots can be tracked as C# code values, as demonstrated in the identical SnapshotTest instance.

Subsequently, Snapshot Unit/Integration Testing steps grow to be common steps of unit/integration testing, even with out together with Scand.StormPetrel.Generator:

  • Prepare: Create the anticipated snapshot worth as a variable, check attribute parameter, or a price in a check knowledge supply methodology physique.
  • Act: Seize the precise snapshot by executing the C# code being examined.
  • Assert: Evaluate the anticipated and precise snapshots for equality utilizing any assertion library/strategies the developer prefers.

Snapshot Testing with Scand.StormPetrel.Generator with out Serialization

In lots of instances, .NET builders can keep away from serializing precise values to JSON, XML, or different codecs and instantiate the anticipated snapshot instantly in C# code, which corresponds to the first use case of Scand.StormPetrel.Generator:

Snapshot Testing in .NET with Storm Petrel

Within the context of Snapshot Testing, a developer can make the most of advantages comparable to:

  • Simpler detection and overview of particular property anticipated values tracked within the assessments by way of the “Discover All References” command in Visible Studio or comparable instructions in different IDEs.
  • Simpler renaming of particular properties in each common code and check code.
  • Simpler assertion of precise/anticipated values with assertion library strategies like FluentAssertions’ BeEquivalentTo, e.g., when the order of properties or array parts within the anticipated baseline doesn’t matter, or some properties will be ignored.
  • Sooner check execution in typical instances.

Snapshot Testing with Scand.StormPetrel.FileSnapshotInfrastructure

In some instances, it is sensible to maintain snapshots as particular person information within the file system. A developer can make the most of advantages comparable to:

  • Simpler overview and comparability of anticipated snapshots by way of specialised software program for pictures, JSON, XML, PDF, or different viewers/comparers.
  • Simpler integration of .NET assessments with different applied sciences. An actual instance is when anticipated JSON snapshots for a .NET RESTful API Service grow to be enter knowledge for JavaScript/TypeScript unit assessments of a consumer utility for the service.
  • Sooner check execution in some instances, comparable to when a efficiency check wants to say giant information.

The anticipated snapshot information can be generated/rewritten with Scand StormPetrel. You must make the most of the Scand.StormPetrel.FileSnapshotInfrastructure on this case based on its documentation. Snapshot Unit/Integration Testing steps are similar to common steps of unit/integration testing and grow to be:

  • Prepare: Learn the anticipated snapshot worth from a file. You must name the Scand.StormPetrel.FileSnapshotInfrastructure.SnapshotProvider.ReadAllText methodology or use different alternate options described within the use instances.
  • Act: Seize the precise snapshot by executing the C# code being examined.
  • Assert: Evaluate the anticipated and precise snapshots for equality utilizing any assertion library/strategies the developer prefers.

Conclusions

Scand Storm Petrel makes use of NuGet and .NET Incremental Turbines infrastructure and will be actively utilized in Snapshot Testing. With minimal or no unwanted effects on unit/integration snapshot check construction and habits, it effectively permits the era/rewriting of anticipated snapshots, dashing up and simplifying software program growth. For extra data, please contact us.

Recent Articles

Related Stories

Leave A Reply

Please enter your comment!
Please enter your name here