The time period “Snapshot Testing” originates from capturing an precise display screen snapshot and evaluating it with an anticipated snapshot. Nevertheless, the time period is just not restricted to pictures and extends to different sorts of precise code execution outcomes, similar to HTML, JSON, XML, PDF, and so on. Usually, Snapshot Unit/Integration Testing includes the next steps in a take a look at technique:
- Prepare: Create the anticipated snapshot.
- Act: Seize the precise snapshot.
- Assert: Examine the anticipated and precise snapshots for equality.
As we all know, the Scand Storm Petrel NuGet packages automate the technology/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 package deal implements automated technology/rewriting of any sort of anticipated values stored in C# code. Thus, we are able to conclude:
- HTML, JSON, XML, and different textual content snapshots may be tracked as C# code values, as seen within the take a look at strategies of the SnapshotTest class in accordance with the documented use instances.
- Binary snapshots can be tracked as C# code values, as demonstrated in the identical SnapshotTest instance.
Due to this fact, 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, take a look at attribute parameter, or a price in a take a look at information supply technique physique.
- Act: Seize the precise snapshot by executing the C# code being examined.
- Assert: Examine 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 straight in C# code, which corresponds to the first use case of Scand.StormPetrel.Generator:
Within the context of Snapshot Testing, a developer can make the most of advantages similar to:
- Simpler detection and overview of particular property anticipated values tracked within the exams through the “Discover All References” command in Visible Studio or comparable instructions in different IDEs.
- Simpler renaming of particular properties in each common code and take a look at code.
- Simpler assertion of precise/anticipated values with assertion library strategies like FluentAssertions’ BeEquivalentTo, e.g., when the order of properties or array components within the anticipated baseline doesn’t matter, or some properties may be ignored.
- Quicker take a look at execution in typical instances.
Snapshot Testing with Scand.StormPetrel.FileSnapshotInfrastructure
In some instances, it is smart to maintain snapshots as particular person recordsdata within the file system. A developer can make the most of advantages similar to:
- Simpler overview and comparability of anticipated snapshots through specialised software program for pictures, JSON, XML, PDF, or different viewers/comparers.
- Simpler integration of .NET exams with different applied sciences. An actual instance is when anticipated JSON snapshots for a .NET RESTful API Service grow to be enter information for JavaScript/TypeScript unit exams of a consumer software for the service.
- Quicker take a look at execution in some instances, similar to when a efficiency take a look at wants to say giant recordsdata.
The anticipated snapshot recordsdata can be generated/rewritten with Scand StormPetrel. That you must make the most of the Scand.StormPetrel.FileSnapshotInfrastructure on this case in accordance with 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. That you must name the Scand.StormPetrel.FileSnapshotInfrastructure.SnapshotProvider.ReadAllText technique or use different options described within the use instances.
- Act: Seize the precise snapshot by executing the C# code being examined.
- Assert: Examine 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 may be actively utilized in Snapshot Testing. With minimal or no unwanted side effects on unit/integration snapshot take a look at construction and conduct, it effectively permits the technology/rewriting of anticipated snapshots, dashing up and simplifying software program improvement. For extra info, please contact us.