fluentassert

module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 1, 2022 License: MIT

README

FluentAssert

Extensible, type-safe, fluent assertion Go library.

Go Reference Keep a Changelog GitHub Release go.mod LICENSE

Build Status Go Report Card Codecov

Please ⭐ Star this repository if you find it valuable and worth maintaining.

Description

The fluent API makes the assertion code easier to read and write (more).

The generics (type parameters) make the usage type-safe.

The library is extensible.

Quick start

package test

import (
	"testing"

	"github.com/pellared/fluentassert/f"
)

type A struct {
	Str   string
	Bool  bool
	Slice []int
}

func Foo() (A, error) {
	return A{Str: "wrong", Slice: []int{1, 4}}, nil
}

func TestFoo(t *testing.T) {
	got, err := Foo()
	f.Obj(err).Zero().Require(t, "should be no error") // uses t.Fatal, stops execution if fails
	f.Obj(got).DeepEqual(
		A{Str: "string", Bool: true, Slice: []int{1, 2}},
	).Assert(t) // uses t.Error, continues execution if fails
}
$ go test
--- FAIL: TestFoo (0.00s)
    foo_test.go:24:
        mismatch (-want +got):
          test.A{
        -       Str:  "string",
        +       Str:  "wrong",
        -       Bool: true,
        +       Bool: false,
                Slice: []int{
                        1,
        -               2,
        +               4,
                },
          }

Custom assertions

You can take advantage of the f.FailureMessage and f.Fluent* types to create your own fluent assertions.

For reference, take a look at the implementation of existing fluent assertions in this repository (for example comparable.go).

Supported Go versions

Minimal supported Go version is 1.18.

Contributing

Feel free to create an issue or propose a pull request.

Developing

Run ./goyek.sh (Bash) or .\goyek.ps1 (PowerShell) to execute the build pipeline.

The repository contains confiugration for Visual Studio Code.

License

fluentassert is licensed under the terms of the MIT license.

github.com/google/go-cmp (license: BSD-3-Clause) is the only third-party dependency.

Directories

Path Synopsis
build module
f
Package f contains the most useful type-safe fluent assertion functions.
Package f contains the most useful type-safe fluent assertion functions.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL