Skip to content

Latest commit

 

History

History
238 lines (193 loc) · 7.68 KB

verify-options.md

File metadata and controls

238 lines (193 loc) · 7.68 KB

Verify Options

AutoVerify

In some scenarios it makes sense to auto-accept any changes as part of a given test run. For example:

  • Keeping a text representation of a Database schema in a .verified.sql file (see Verify.SqlServer).

Note that auto accepted changes in .verified. files remain visible in source control tooling.

This can be done using AutoVerify():

Instance

var settings = new VerifySettings();
settings.AutoVerify();

snippet source | anchor

Or with a delegate:

var settings = new VerifySettings();
settings.AutoVerify(
    verifiedFile =>
        Path.GetExtension(verifiedFile) == "png");

snippet source | anchor

Fluent

[Fact]
public Task AutoVerifyFluent() =>
    Verify("Value")
        .AutoVerify();

snippet source | anchor

Or with a delegate:

[Fact]
public Task AutoVerifyFluentDelegate() =>
    Verify("Value")
        .AutoVerify(
            verifiedFile =>
                Path.GetExtension(verifiedFile) == "png");

snippet source | anchor

Globally

public static class ModuleInitializer
{
    [ModuleInitializer]
    public static void Init() =>
        VerifierSettings.AutoVerify();
}

snippet source | anchor

Or with a delegate:

public static class ModuleInitializer
{
    [ModuleInitializer]
    public static void Init() =>
        VerifierSettings.AutoVerify(
            (typeName, methodName, verifiedFile) =>
                Path.GetExtension(verifiedFile) == "png");
}

snippet source | anchor

OnHandlers

  • OnVerify takes two actions that are called before and after each verification.
  • OnFirstVerify is called when there is no verified file.
  • OnVerifyMismatch is called when a received file does not match the existing verified file.

AutoVerify

OnHandlers are called before AutoVerify logic being applied. So for example in the case of OnVerifyMismatch, both the received and verified file will exist at the point OnVerifyMismatch is called. Immediately after received will be used to overwrite verified.

Globally

public static class ModuleInitializer
{
    [ModuleInitializer]
    public static void Init()
    {
        VerifierSettings.OnVerify(
            before: () => Debug.WriteLine("before"),
            after: () => Debug.WriteLine("after"));
        VerifierSettings.OnFirstVerify(
            (receivedFile, receivedText, autoVerify) =>
            {
                Debug.WriteLine(receivedFile);
                Debug.WriteLine(receivedText);
                return Task.CompletedTask;
            });
        VerifierSettings.OnVerifyMismatch(
            (filePair, message, autoVerify) =>
            {
                Debug.WriteLine(filePair.ReceivedPath);
                Debug.WriteLine(filePair.VerifiedPath);
                Debug.WriteLine(message);
                return Task.CompletedTask;
            });
    }
}

snippet source | anchor

Instance

[Fact]
public Task OnCallbacks()
{
    var settings = new VerifySettings();
    settings.OnVerify(
        before: () => Debug.WriteLine("before"),
        after: () => Debug.WriteLine("after"));
    settings.OnFirstVerify(
        (receivedFile, receivedText, autoVerify) =>
        {
            Debug.WriteLine(receivedFile);
            Debug.WriteLine(receivedText);
            return Task.CompletedTask;
        });
    settings.OnVerifyMismatch(
        (filePair, message, autoVerify) =>
        {
            Debug.WriteLine(filePair.ReceivedPath);
            Debug.WriteLine(filePair.VerifiedPath);
            Debug.WriteLine(message);
            return Task.CompletedTask;
        });

    return Verify("value", settings);
}

snippet source | anchor

Fluent

[Fact]
public Task OnFluentCallbacks() =>
    Verify("value")
        .OnVerify(
            before: () => Debug.WriteLine("before"),
            after: () => Debug.WriteLine("after"))
        .OnFirstVerify(
            (receivedFile, receivedText, autoVerify) =>
            {
                Debug.WriteLine(receivedFile);
                Debug.WriteLine(receivedText);
                return Task.CompletedTask;
            })
        .OnVerifyMismatch(
            (filePair, message, autoVerify) =>
            {
                Debug.WriteLine(filePair.ReceivedPath);
                Debug.WriteLine(filePair.VerifiedPath);
                Debug.WriteLine(message);
                return Task.CompletedTask;
            });

snippet source | anchor

OmitContentFromException

By default, when a verify mismatch occurs for text, the content of the received and verified files is included in the exception that is thrown. This results in that text being included in test runners and build output. To omit the content use VerifierSettings.OmitContentFromException.

DisableDiff

To disable diff launching:

var settings = new VerifySettings();
settings.DisableDiff();

snippet source | anchor