import "github.com/stretchr/testify/require"
Package require implements the same assertions as the assert package but stops test execution when a test fails.
Example Usage
The following is a complete example using require in a standard test function:
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestSomething(t *testing.T) {
var a string = "Hello"
var b string = "Hello"
require.Equal(t, a, b, "The two words should be the same.")
}Assertions
The require package have same global functions as in the assert package, but instead of returning a boolean result they call testing.T.FailNow. A consequence of this is that it must be called from the goroutine running the test function, not from other goroutines created during the test.
Every assertion function also takes an optional string message as the final argument, allowing custom error messages to be appended to the message the assertion method outputs.
Functions
func Condition(t TestingT, comp assert.Comparison, msgAndArgs ...interface{})
Condition uses a Comparison to assert a complex condition.
func Conditionf(t TestingT, comp assert.Comparison, msg string, args ...interface{})
Conditionf uses a Comparison to assert a complex condition.
func Contains(t TestingT, s interface{}, contains interface{}, msgAndArgs ...interface{})
Contains asserts that the specified string, list(array, slice...) or map contains the specified substring or element.
require.Contains(t, "Hello World", "World")
require.Contains(t, ["Hello", "World"], "World")
require.Contains(t, {"Hello": "World"}, "Hello")func Containsf(t TestingT, s interface{}, contains interface{}, msg string, args ...interface{})
Containsf asserts that the specified string, list(array, slice...) or map contains the specified substring or element.
require.Containsf(t, "Hello World", "World", "error message %s", "formatted")
require.Containsf(t, ["Hello", "World"], "World", "error message %s", "formatted")
require.Containsf(t, {"Hello": "World"}, "Hello", "error message %s", "formatted")func DirExists(t TestingT, path string, msgAndArgs ...interface{})
DirExists checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists.
func DirExistsf(t TestingT, path string, msg string, args ...interface{})
DirExistsf checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists.
func ElementsMatch(t TestingT, listA interface{}, listB interface{}, msgAndArgs ...interface{})
ElementsMatch asserts that the specified listA(array, slice...) is equal to specified listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, the number of appearances of each of them in both lists should match.
require.ElementsMatch(t, [1, 3, 2, 3], [1, 3, 3, 2])
func ElementsMatchf(t TestingT, listA interface{}, listB interface{}, msg string, args ...interface{})
Source: require/require.go:110
ElementsMatchf asserts that the specified listA(array, slice...) is equal to specified listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, the number of appearances of each of them in both lists should match.
require.ElementsMatchf(t, [1, 3, 2, 3], [1, 3, 3, 2], "error message %s", "formatted")
func Empty(t TestingT, object interface{}, msgAndArgs ...interface{})
Source: require/require.go:133
Empty asserts that the given value is "empty".
Zero values are "empty".
Arrays are "empty" if every element is the zero value of the type (stricter than "empty").
Slices, maps and channels with zero length are "empty".
Pointer values are "empty" if the pointer is nil or if the pointed value is "empty".
require.Empty(t, obj)func Emptyf(t TestingT, object interface{}, msg string, args ...interface{})
Source: require/require.go:156
Emptyf asserts that the given value is "empty".
Zero values are "empty".
Arrays are "empty" if every element is the zero value of the type (stricter than "empty").
Slices, maps and channels with zero length are "empty".
Pointer values are "empty" if the pointer is nil or if the pointed value is "empty".
require.Emptyf(t, obj, "error message %s", "formatted")func Equal(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{})
Source: require/require.go:173
Equal asserts that two objects are equal.
require.Equal(t, 123, 123)Pointer variable equality is determined based on the equality of the referenced values (as opposed to the memory addresses). Function equality cannot be determined and will always fail.
func EqualError(t TestingT, theError error, errString string, msgAndArgs ...interface{})
Source: require/require.go:188
EqualError asserts that a function returned a non-nil error (i.e. an error) and that it is equal to the provided error.
actualObj, err := SomeFunction()
require.EqualError(t, err, expectedErrorString)func EqualErrorf(t TestingT, theError error, errString string, msg string, args ...interface{})
Source: require/require.go:203
EqualErrorf asserts that a function returned a non-nil error (i.e. an error) and that it is equal to the provided error.
actualObj, err := SomeFunction()
require.EqualErrorf(t, err, expectedErrorString, "error message %s", "formatted")func EqualExportedValues(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{})
Source: require/require.go:223
EqualExportedValues asserts that the types of two objects are equal and their public fields are also equal. This is useful for comparing structs that have private fields that could potentially differ.
type S struct {
Exported int
notExported int
}
require.EqualExportedValues(t, S{1, 2}, S{1, 3}) => true
require.EqualExportedValues(t, S{1, 2}, S{2, 3}) => falsefunc EqualExportedValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{})
Source: require/require.go:243
EqualExportedValuesf asserts that the types of two objects are equal and their public fields are also equal. This is useful for comparing structs that have private fields that could potentially differ.
type S struct {
Exported int
notExported int
}
require.EqualExportedValuesf(t, S{1, 2}, S{1, 3}, "error message %s", "formatted") => true
require.EqualExportedValuesf(t, S{1, 2}, S{2, 3}, "error message %s", "formatted") => falsefunc EqualValues(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{})
Source: require/require.go:257
EqualValues asserts that two objects are equal or convertible to the larger type and equal.
require.EqualValues(t, uint32(123), int32(123))func EqualValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{})
Source: require/require.go:271
EqualValuesf asserts that two objects are equal or convertible to the larger type and equal.
require.EqualValuesf(t, uint32(123), int32(123), "error message %s", "formatted")func Equalf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{})
Source: require/require.go:288
Equalf asserts that two objects are equal.
require.Equalf(t, 123, 123, "error message %s", "formatted")Pointer variable equality is determined based on the equality of the referenced values (as opposed to the memory addresses). Function equality cannot be determined and will always fail.
func Error(t TestingT, err error, msgAndArgs ...interface{})
Source: require/require.go:302
Error asserts that a function returned a non-nil error (ie. an error).
actualObj, err := SomeFunction()
require.Error(t, err)func ErrorAs(t TestingT, err error, target interface{}, msgAndArgs ...interface{})
Source: require/require.go:314
ErrorAs asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value. This is a wrapper for errors.As.
func ErrorAsf(t TestingT, err error, target interface{}, msg string, args ...interface{})
Source: require/require.go:326
ErrorAsf asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value. This is a wrapper for errors.As.
func ErrorContains(t TestingT, theError error, contains string, msgAndArgs ...interface{})
Source: require/require.go:341
ErrorContains asserts that a function returned a non-nil error (i.e. an error) and that the error contains the specified substring.
actualObj, err := SomeFunction()
require.ErrorContains(t, err, expectedErrorSubString)func ErrorContainsf(t TestingT, theError error, contains string, msg string, args ...interface{})
Source: require/require.go:356
ErrorContainsf asserts that a function returned a non-nil error (i.e. an error) and that the error contains the specified substring.
actualObj, err := SomeFunction()
require.ErrorContainsf(t, err, expectedErrorSubString, "error message %s", "formatted")func ErrorIs(t TestingT, err error, target error, msgAndArgs ...interface{})
Source: require/require.go:368
ErrorIs asserts that at least one of the errors in err's chain matches target. This is a wrapper for errors.Is.
func ErrorIsf(t TestingT, err error, target error, msg string, args ...interface{})
Source: require/require.go:380
ErrorIsf asserts that at least one of the errors in err's chain matches target. This is a wrapper for errors.Is.
func Errorf(t TestingT, err error, msg string, args ...interface{})
Source: require/require.go:394
Errorf asserts that a function returned a non-nil error (ie. an error).
actualObj, err := SomeFunction()
require.Errorf(t, err, "error message %s", "formatted")func Eventually(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{})
Source: require/require.go:408
Eventually asserts that given condition will be met in waitFor time, periodically checking target function each tick.
require.Eventually(t, func() bool { return true; }, time.Second, 10*time.Millisecond)func EventuallyWithT(t TestingT, condition func(collect *assert.CollectT), waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{})
Source: require/require.go:436
EventuallyWithT asserts that given condition will be met in waitFor time, periodically checking target function each tick. In contrast to Eventually, it supplies a CollectT to the condition function, so that the condition function can use the CollectT to call other assertions. The condition is considered "met" if no errors are raised in a tick. The supplied CollectT collects all errors from one tick (if there are any). If the condition is not met before waitFor, the collected errors of the last tick are copied to t.
externalValue := false
go func() {
time.Sleep(8*time.Second)
externalValue = true
}()
require.EventuallyWithT(t, func(c *assert.CollectT) {
// add assertions as needed; any assertion failure will fail the current tick
require.True(c, externalValue, "expected 'externalValue' to be true")
}, 10*time.Second, 1*time.Second, "external state has not changed to 'true'; still false")func EventuallyWithTf(t TestingT, condition func(collect *assert.CollectT), waitFor time.Duration, tick time.Duration, msg string, args ...interface{})
Source: require/require.go:464
EventuallyWithTf asserts that given condition will be met in waitFor time, periodically checking target function each tick. In contrast to Eventually, it supplies a CollectT to the condition function, so that the condition function can use the CollectT to call other assertions. The condition is considered "met" if no errors are raised in a tick. The supplied CollectT collects all errors from one tick (if there are any). If the condition is not met before waitFor, the collected errors of the last tick are copied to t.
externalValue := false
go func() {
time.Sleep(8*time.Second)
externalValue = true
}()
require.EventuallyWithTf(t, func(c *assert.CollectT) {
// add assertions as needed; any assertion failure will fail the current tick
require.True(c, externalValue, "expected 'externalValue' to be true")
}, 10*time.Second, 1*time.Second, "error message %s", "formatted")func Eventuallyf(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{})
Source: require/require.go:478
Eventuallyf asserts that given condition will be met in waitFor time, periodically checking target function each tick.
require.Eventuallyf(t, func() bool { return true; }, time.Second, 10*time.Millisecond, "error message %s", "formatted")func Exactly(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{})
Source: require/require.go:491
Exactly asserts that two objects are equal in value and type.
require.Exactly(t, int32(123), int64(123))func Exactlyf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{})
Source: require/require.go:504
Exactlyf asserts that two objects are equal in value and type.
require.Exactlyf(t, int32(123), int64(123), "error message %s", "formatted")func Fail(t TestingT, failureMessage string, msgAndArgs ...interface{})
Source: require/require.go:515
Fail reports a failure through
func FailNow(t TestingT, failureMessage string, msgAndArgs ...interface{})
Source: require/require.go:526
FailNow fails test
func FailNowf(t TestingT, failureMessage string, msg string, args ...interface{})
Source: require/require.go:537
FailNowf fails test
func Failf(t TestingT, failureMessage string, msg string, args ...interface{})
Source: require/require.go:548
Failf reports a failure through
func False(t TestingT, value bool, msgAndArgs ...interface{})
Source: require/require.go:561
False asserts that the specified value is false.
require.False(t, myBool)func Falsef(t TestingT, value bool, msg string, args ...interface{})
Source: require/require.go:574
Falsef asserts that the specified value is false.
require.Falsef(t, myBool, "error message %s", "formatted")func FileExists(t TestingT, path string, msgAndArgs ...interface{})
Source: require/require.go:586
FileExists checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file.
func FileExistsf(t TestingT, path string, msg string, args ...interface{})
Source: require/require.go:598
FileExistsf checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file.
func Greater(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{})
Source: require/require.go:613
Greater asserts that the first element is greater than the second
require.Greater(t, 2, 1)
require.Greater(t, float64(2), float64(1))
require.Greater(t, "b", "a")func GreaterOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{})
Source: require/require.go:629
GreaterOrEqual asserts that the first element is greater than or equal to the second
require.GreaterOrEqual(t, 2, 1)
require.GreaterOrEqual(t, 2, 2)
require.GreaterOrEqual(t, "b", "a")
require.GreaterOrEqual(t, "b", "b")func GreaterOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{})
Source: require/require.go:645
GreaterOrEqualf asserts that the first element is greater than or equal to the second
require.GreaterOrEqualf(t, 2, 1, "error message %s", "formatted")
require.GreaterOrEqualf(t, 2, 2, "error message %s", "formatted")
require.GreaterOrEqualf(t, "b", "a", "error message %s", "formatted")
require.GreaterOrEqualf(t, "b", "b", "error message %s", "formatted")func Greaterf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{})
Source: require/require.go:660
Greaterf asserts that the first element is greater than the second
require.Greaterf(t, 2, 1, "error message %s", "formatted")
require.Greaterf(t, float64(2), float64(1), "error message %s", "formatted")
require.Greaterf(t, "b", "a", "error message %s", "formatted")func HTTPBodyContains(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{})
Source: require/require.go:674
HTTPBodyContains asserts that a specified handler returns a body that contains a string.
require.HTTPBodyContains(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky")func HTTPBodyContainsf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{})
Source: require/require.go:688
HTTPBodyContainsf asserts that a specified handler returns a body that contains a string.
require.HTTPBodyContainsf(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted")func HTTPBodyNotContains(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{})
Source: require/require.go:702
HTTPBodyNotContains asserts that a specified handler returns a body that does not contain a string.
require.HTTPBodyNotContains(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky")func HTTPBodyNotContainsf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{})
Source: require/require.go:716
HTTPBodyNotContainsf asserts that a specified handler returns a body that does not contain a string.
require.HTTPBodyNotContainsf(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted")func HTTPError(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{})
Source: require/require.go:729
HTTPError asserts that a specified handler returns an error status code.
require.HTTPError(t, myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}}func HTTPErrorf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{})
Source: require/require.go:742
HTTPErrorf asserts that a specified handler returns an error status code.
require.HTTPErrorf(t, myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}}func HTTPRedirect(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{})
Source: require/require.go:755
HTTPRedirect asserts that a specified handler returns a redirect status code.
require.HTTPRedirect(t, myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}}func HTTPRedirectf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{})
Source: require/require.go:768
HTTPRedirectf asserts that a specified handler returns a redirect status code.
require.HTTPRedirectf(t, myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}}func HTTPStatusCode(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msgAndArgs ...interface{})
Source: require/require.go:781
HTTPStatusCode asserts that a specified handler returns a specified status code.
require.HTTPStatusCode(t, myHandler, "GET", "/notImplemented", nil, 501)func HTTPStatusCodef(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msg string, args ...interface{})
Source: require/require.go:794
HTTPStatusCodef asserts that a specified handler returns a specified status code.
require.HTTPStatusCodef(t, myHandler, "GET", "/notImplemented", nil, 501, "error message %s", "formatted")func HTTPSuccess(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{})
Source: require/require.go:807
HTTPSuccess asserts that a specified handler returns a success status code.
require.HTTPSuccess(t, myHandler, "POST", "http://www.google.com", nil)func HTTPSuccessf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{})
Source: require/require.go:820
HTTPSuccessf asserts that a specified handler returns a success status code.
require.HTTPSuccessf(t, myHandler, "POST", "http://www.google.com", nil, "error message %s", "formatted")func Implements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{})
Source: require/require.go:833
Implements asserts that an object is implemented by the specified interface.
require.Implements(t, (*MyInterface)(nil), new(MyObject))func Implementsf(t TestingT, interfaceObject interface{}, object interface{}, msg string, args ...interface{})
Source: require/require.go:846
Implementsf asserts that an object is implemented by the specified interface.
require.Implementsf(t, (*MyInterface)(nil), new(MyObject), "error message %s", "formatted")func InDelta(t TestingT, expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{})
Source: require/require.go:859
InDelta asserts that the two numerals are within delta of each other.
require.InDelta(t, math.Pi, 22/7.0, 0.01)func InDeltaMapValues(t TestingT, expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{})
Source: require/require.go:870
InDeltaMapValues is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys.
func InDeltaMapValuesf(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{})
Source: require/require.go:881
InDeltaMapValuesf is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys.
func InDeltaSlice(t TestingT, expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{})
Source: require/require.go:892
InDeltaSlice is the same as InDelta, except it compares two slices.
func InDeltaSlicef(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{})
Source: require/require.go:903
InDeltaSlicef is the same as InDelta, except it compares two slices.
func InDeltaf(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{})
Source: require/require.go:916
InDeltaf asserts that the two numerals are within delta of each other.
require.InDeltaf(t, math.Pi, 22/7.0, 0.01, "error message %s", "formatted")func InEpsilon(t TestingT, expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{})
Source: require/require.go:927
InEpsilon asserts that expected and actual have a relative error less than epsilon
func InEpsilonSlice(t TestingT, expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{})
Source: require/require.go:938
InEpsilonSlice is the same as InEpsilon, except it compares each value from two slices.
func InEpsilonSlicef(t TestingT, expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{})
Source: require/require.go:949
InEpsilonSlicef is the same as InEpsilon, except it compares each value from two slices.
func InEpsilonf(t TestingT, expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{})
Source: require/require.go:960
InEpsilonf asserts that expected and actual have a relative error less than epsilon
func IsDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{})
Source: require/require.go:975
IsDecreasing asserts that the collection is decreasing
require.IsDecreasing(t, []int{2, 1, 0})
require.IsDecreasing(t, []float{2, 1})
require.IsDecreasing(t, []string{"b", "a"})func IsDecreasingf(t TestingT, object interface{}, msg string, args ...interface{})
Source: require/require.go:990
IsDecreasingf asserts that the collection is decreasing
require.IsDecreasingf(t, []int{2, 1, 0}, "error message %s", "formatted")
require.IsDecreasingf(t, []float{2, 1}, "error message %s", "formatted")
require.IsDecreasingf(t, []string{"b", "a"}, "error message %s", "formatted")func IsIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{})
Source: require/require.go:1005
IsIncreasing asserts that the collection is increasing
require.IsIncreasing(t, []int{1, 2, 3})
require.IsIncreasing(t, []float{1, 2})
require.IsIncreasing(t, []string{"a", "b"})func IsIncreasingf(t TestingT, object interface{}, msg string, args ...interface{})
Source: require/require.go:1020
IsIncreasingf asserts that the collection is increasing
require.IsIncreasingf(t, []int{1, 2, 3}, "error message %s", "formatted")
require.IsIncreasingf(t, []float{1, 2}, "error message %s", "formatted")
require.IsIncreasingf(t, []string{"a", "b"}, "error message %s", "formatted")func IsNonDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{})
Source: require/require.go:1035
IsNonDecreasing asserts that the collection is not decreasing
require.IsNonDecreasing(t, []int{1, 1, 2})
require.IsNonDecreasing(t, []float{1, 2})
require.IsNonDecreasing(t, []string{"a", "b"})func IsNonDecreasingf(t TestingT, object interface{}, msg string, args ...interface{})
Source: require/require.go:1050
IsNonDecreasingf asserts that the collection is not decreasing
require.IsNonDecreasingf(t, []int{1, 1, 2}, "error message %s", "formatted")
require.IsNonDecreasingf(t, []float{1, 2}, "error message %s", "formatted")
require.IsNonDecreasingf(t, []string{"a", "b"}, "error message %s", "formatted")func IsNonIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{})
Source: require/require.go:1065
IsNonIncreasing asserts that the collection is not increasing
require.IsNonIncreasing(t, []int{2, 1, 1})
require.IsNonIncreasing(t, []float{2, 1})
require.IsNonIncreasing(t, []string{"b", "a"})func IsNonIncreasingf(t TestingT, object interface{}, msg string, args ...interface{})
Source: require/require.go:1080
IsNonIncreasingf asserts that the collection is not increasing
require.IsNonIncreasingf(t, []int{2, 1, 1}, "error message %s", "formatted")
require.IsNonIncreasingf(t, []float{2, 1}, "error message %s", "formatted")
require.IsNonIncreasingf(t, []string{"b", "a"}, "error message %s", "formatted")func IsNotType(t TestingT, theType interface{}, object interface{}, msgAndArgs ...interface{})
Source: require/require.go:1093
IsNotType asserts that the specified objects are not of the same type.
require.IsNotType(t, &NotMyStruct{}, &MyStruct{})func IsNotTypef(t TestingT, theType interface{}, object interface{}, msg string, args ...interface{})
Source: require/require.go:1106
IsNotTypef asserts that the specified objects are not of the same type.
require.IsNotTypef(t, &NotMyStruct{}, &MyStruct{}, "error message %s", "formatted")func IsType(t TestingT, expectedType interface{}, object interface{}, msgAndArgs ...interface{})
Source: require/require.go:1119
IsType asserts that the specified objects are of the same type.
require.IsType(t, &MyStruct{}, &MyStruct{})func IsTypef(t TestingT, expectedType interface{}, object interface{}, msg string, args ...interface{})
Source: require/require.go:1132
IsTypef asserts that the specified objects are of the same type.
require.IsTypef(t, &MyStruct{}, &MyStruct{}, "error message %s", "formatted")func JSONEq(t TestingT, expected string, actual string, msgAndArgs ...interface{})
Source: require/require.go:1145
JSONEq asserts that two JSON strings are equivalent.
require.JSONEq(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`)func JSONEqf(t TestingT, expected string, actual string, msg string, args ...interface{})
Source: require/require.go:1158
JSONEqf asserts that two JSON strings are equivalent.
require.JSONEqf(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`, "error message %s", "formatted")func Len(t TestingT, object interface{}, length int, msgAndArgs ...interface{})
Source: require/require.go:1172
Len asserts that the specified object has specific length. Len also fails if the object has a type that len() not accept.
require.Len(t, mySlice, 3)func Lenf(t TestingT, object interface{}, length int, msg string, args ...interface{})
Source: require/require.go:1186
Lenf asserts that the specified object has specific length. Lenf also fails if the object has a type that len() not accept.
require.Lenf(t, mySlice, 3, "error message %s", "formatted")func Less(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{})
Source: require/require.go:1201
Less asserts that the first element is less than the second
require.Less(t, 1, 2)
require.Less(t, float64(1), float64(2))
require.Less(t, "a", "b")func LessOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{})
Source: require/require.go:1217
LessOrEqual asserts that the first element is less than or equal to the second
require.LessOrEqual(t, 1, 2)
require.LessOrEqual(t, 2, 2)
require.LessOrEqual(t, "a", "b")
require.LessOrEqual(t, "b", "b")func LessOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{})
Source: require/require.go:1233
LessOrEqualf asserts that the first element is less than or equal to the second
require.LessOrEqualf(t, 1, 2, "error message %s", "formatted")
require.LessOrEqualf(t, 2, 2, "error message %s", "formatted")
require.LessOrEqualf(t, "a", "b", "error message %s", "formatted")
require.LessOrEqualf(t, "b", "b", "error message %s", "formatted")func Lessf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{})
Source: require/require.go:1248
Lessf asserts that the first element is less than the second
require.Lessf(t, 1, 2, "error message %s", "formatted")
require.Lessf(t, float64(1), float64(2), "error message %s", "formatted")
require.Lessf(t, "a", "b", "error message %s", "formatted")func Negative(t TestingT, e interface{}, msgAndArgs ...interface{})
Source: require/require.go:1262
Negative asserts that the specified element is negative
require.Negative(t, -1)
require.Negative(t, -1.23)func Negativef(t TestingT, e interface{}, msg string, args ...interface{})
Source: require/require.go:1276
Negativef asserts that the specified element is negative
require.Negativef(t, -1, "error message %s", "formatted")
require.Negativef(t, -1.23, "error message %s", "formatted")func Never(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{})
Source: require/require.go:1290
Never asserts that the given condition doesn't satisfy in waitFor time, periodically checking the target function each tick.
require.Never(t, func() bool { return false; }, time.Second, 10*time.Millisecond)func Neverf(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{})
Source: require/require.go:1304
Neverf asserts that the given condition doesn't satisfy in waitFor time, periodically checking the target function each tick.
require.Neverf(t, func() bool { return false; }, time.Second, 10*time.Millisecond, "error message %s", "formatted")func New(t TestingT) *Assertions
Source: require/forward_requirements.go:10
New makes a new Assertions object for the specified TestingT.
func Nil(t TestingT, object interface{}, msgAndArgs ...interface{})
Source: require/require.go:1317
Nil asserts that the specified object is nil.
require.Nil(t, err)func Nilf(t TestingT, object interface{}, msg string, args ...interface{})
Source: require/require.go:1330
Nilf asserts that the specified object is nil.
require.Nilf(t, err, "error message %s", "formatted")func NoDirExists(t TestingT, path string, msgAndArgs ...interface{})
Source: require/require.go:1342
NoDirExists checks whether a directory does not exist in the given path. It fails if the path points to an existing _directory_ only.
func NoDirExistsf(t TestingT, path string, msg string, args ...interface{})
Source: require/require.go:1354
NoDirExistsf checks whether a directory does not exist in the given path. It fails if the path points to an existing _directory_ only.
func NoError(t TestingT, err error, msgAndArgs ...interface{})
Source: require/require.go:1369
NoError asserts that a function returned a nil error (ie. no error).
actualObj, err := SomeFunction()
require.NoError(t, err)
require.Equal(t, expectedObj, actualObj)func NoErrorf(t TestingT, err error, msg string, args ...interface{})
Source: require/require.go:1384
NoErrorf asserts that a function returned a nil error (ie. no error).
actualObj, err := SomeFunction()
require.NoErrorf(t, err, "error message %s", "formatted")
require.Equal(t, expectedObj, actualObj)func NoFileExists(t TestingT, path string, msgAndArgs ...interface{})
Source: require/require.go:1396
NoFileExists checks whether a file does not exist in a given path. It fails if the path points to an existing _file_ only.
func NoFileExistsf(t TestingT, path string, msg string, args ...interface{})
Source: require/require.go:1408
NoFileExistsf checks whether a file does not exist in a given path. It fails if the path points to an existing _file_ only.
func NotContains(t TestingT, s interface{}, contains interface{}, msgAndArgs ...interface{})
Source: require/require.go:1424
NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the specified substring or element.
require.NotContains(t, "Hello World", "Earth")
require.NotContains(t, ["Hello", "World"], "Earth")
require.NotContains(t, {"Hello": "World"}, "Earth")func NotContainsf(t TestingT, s interface{}, contains interface{}, msg string, args ...interface{})
Source: require/require.go:1440
NotContainsf asserts that the specified string, list(array, slice...) or map does NOT contain the specified substring or element.
require.NotContainsf(t, "Hello World", "Earth", "error message %s", "formatted")
require.NotContainsf(t, ["Hello", "World"], "Earth", "error message %s", "formatted")
require.NotContainsf(t, {"Hello": "World"}, "Earth", "error message %s", "formatted")func NotElementsMatch(t TestingT, listA interface{}, listB interface{}, msgAndArgs ...interface{})
Source: require/require.go:1460
NotElementsMatch asserts that the specified listA(array, slice...) is NOT equal to specified listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, the number of appearances of each of them in both lists should not match. This is an inverse of ElementsMatch.
require.NotElementsMatch(t, [1, 1, 2, 3], [1, 1, 2, 3]) -> false
require.NotElementsMatch(t, [1, 1, 2, 3], [1, 2, 3]) -> true
require.NotElementsMatch(t, [1, 2, 3], [1, 2, 4]) -> true
func NotElementsMatchf(t TestingT, listA interface{}, listB interface{}, msg string, args ...interface{})
Source: require/require.go:1480
NotElementsMatchf asserts that the specified listA(array, slice...) is NOT equal to specified listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, the number of appearances of each of them in both lists should not match. This is an inverse of ElementsMatch.
require.NotElementsMatchf(t, [1, 1, 2, 3], [1, 1, 2, 3], "error message %s", "formatted") -> false
require.NotElementsMatchf(t, [1, 1, 2, 3], [1, 2, 3], "error message %s", "formatted") -> true
require.NotElementsMatchf(t, [1, 2, 3], [1, 2, 4], "error message %s", "formatted") -> true
func NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{})
Source: require/require.go:1494
NotEmpty asserts that the specified object is NOT Empty.
require.NotEmpty(t, obj)
require.Equal(t, "two", obj[1])func NotEmptyf(t TestingT, object interface{}, msg string, args ...interface{})
Source: require/require.go:1508
NotEmptyf asserts that the specified object is NOT Empty.
require.NotEmptyf(t, obj, "error message %s", "formatted")
require.Equal(t, "two", obj[1])func NotEqual(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{})
Source: require/require.go:1524
NotEqual asserts that the specified values are NOT equal.
require.NotEqual(t, obj1, obj2)Pointer variable equality is determined based on the equality of the referenced values (as opposed to the memory addresses).
func NotEqualValues(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{})
Source: require/require.go:1537
NotEqualValues asserts that two objects are not equal even when converted to the same type
require.NotEqualValues(t, obj1, obj2)func NotEqualValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{})
Source: require/require.go:1550
NotEqualValuesf asserts that two objects are not equal even when converted to the same type
require.NotEqualValuesf(t, obj1, obj2, "error message %s", "formatted")func NotEqualf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{})
Source: require/require.go:1566
NotEqualf asserts that the specified values are NOT equal.
require.NotEqualf(t, obj1, obj2, "error message %s", "formatted")Pointer variable equality is determined based on the equality of the referenced values (as opposed to the memory addresses).
func NotErrorAs(t TestingT, err error, target interface{}, msgAndArgs ...interface{})
Source: require/require.go:1578
NotErrorAs asserts that none of the errors in err's chain matches target, but if so, sets target to that error value.
func NotErrorAsf(t TestingT, err error, target interface{}, msg string, args ...interface{})
Source: require/require.go:1590
NotErrorAsf asserts that none of the errors in err's chain matches target, but if so, sets target to that error value.
func NotErrorIs(t TestingT, err error, target error, msgAndArgs ...interface{})
Source: require/require.go:1602
NotErrorIs asserts that none of the errors in err's chain matches target. This is a wrapper for errors.Is.
func NotErrorIsf(t TestingT, err error, target error, msg string, args ...interface{})
Source: require/require.go:1614
NotErrorIsf asserts that none of the errors in err's chain matches target. This is a wrapper for errors.Is.
func NotImplements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{})
Source: require/require.go:1627
NotImplements asserts that an object does not implement the specified interface.
require.NotImplements(t, (*MyInterface)(nil), new(MyObject))func NotImplementsf(t TestingT, interfaceObject interface{}, object interface{}, msg string, args ...interface{})
Source: require/require.go:1640
NotImplementsf asserts that an object does not implement the specified interface.
require.NotImplementsf(t, (*MyInterface)(nil), new(MyObject), "error message %s", "formatted")func NotNil(t TestingT, object interface{}, msgAndArgs ...interface{})
Source: require/require.go:1653
NotNil asserts that the specified object is not nil.
require.NotNil(t, err)func NotNilf(t TestingT, object interface{}, msg string, args ...interface{})
Source: require/require.go:1666
NotNilf asserts that the specified object is not nil.
require.NotNilf(t, err, "error message %s", "formatted")func NotPanics(t TestingT, f assert.PanicTestFunc, msgAndArgs ...interface{})
Source: require/require.go:1679
NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic.
require.NotPanics(t, func(){ RemainCalm() })func NotPanicsf(t TestingT, f assert.PanicTestFunc, msg string, args ...interface{})
Source: require/require.go:1692
NotPanicsf asserts that the code inside the specified PanicTestFunc does NOT panic.
require.NotPanicsf(t, func(){ RemainCalm() }, "error message %s", "formatted")func NotRegexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{})
Source: require/require.go:1706
NotRegexp asserts that a specified regexp does not match a string.
require.NotRegexp(t, regexp.MustCompile("starts"), "it's starting")
require.NotRegexp(t, "^start", "it's not starting")func NotRegexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...interface{})
Source: require/require.go:1720
NotRegexpf asserts that a specified regexp does not match a string.
require.NotRegexpf(t, regexp.MustCompile("starts"), "it's starting", "error message %s", "formatted")
require.NotRegexpf(t, "^start", "it's not starting", "error message %s", "formatted")func NotSame(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{})
Source: require/require.go:1736
NotSame asserts that two pointers do not reference the same object.
require.NotSame(t, ptr1, ptr2)Both arguments must be pointer variables. Pointer variable sameness is determined based on the equality of both type and value.
func NotSamef(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{})
Source: require/require.go:1752
NotSamef asserts that two pointers do not reference the same object.
require.NotSamef(t, ptr1, ptr2, "error message %s", "formatted")Both arguments must be pointer variables. Pointer variable sameness is determined based on the equality of both type and value.
func NotSubset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...interface{})
Source: require/require.go:1771
NotSubset asserts that the list (array, slice, or map) does NOT contain all elements given in the subset (array, slice, or map). Map elements are key-value pairs unless compared with an array or slice where only the map key is evaluated.
require.NotSubset(t, [1, 3, 4], [1, 2])
require.NotSubset(t, {"x": 1, "y": 2}, {"z": 3})
require.NotSubset(t, [1, 3, 4], {1: "one", 2: "two"})
require.NotSubset(t, {"x": 1, "y": 2}, ["z"])func NotSubsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{})
Source: require/require.go:1790
NotSubsetf asserts that the list (array, slice, or map) does NOT contain all elements given in the subset (array, slice, or map). Map elements are key-value pairs unless compared with an array or slice where only the map key is evaluated.
require.NotSubsetf(t, [1, 3, 4], [1, 2], "error message %s", "formatted")
require.NotSubsetf(t, {"x": 1, "y": 2}, {"z": 3}, "error message %s", "formatted")
require.NotSubsetf(t, [1, 3, 4], {1: "one", 2: "two"}, "error message %s", "formatted")
require.NotSubsetf(t, {"x": 1, "y": 2}, ["z"], "error message %s", "formatted")func NotZero(t TestingT, i interface{}, msgAndArgs ...interface{})
Source: require/require.go:1801
NotZero asserts that i is not the zero value for its type.
func NotZerof(t TestingT, i interface{}, msg string, args ...interface{})
Source: require/require.go:1812
NotZerof asserts that i is not the zero value for its type.
func Panics(t TestingT, f assert.PanicTestFunc, msgAndArgs ...interface{})
Source: require/require.go:1825
Panics asserts that the code inside the specified PanicTestFunc panics.
require.Panics(t, func(){ GoCrazy() })func PanicsWithError(t TestingT, errString string, f assert.PanicTestFunc, msgAndArgs ...interface{})
Source: require/require.go:1840
PanicsWithError asserts that the code inside the specified PanicTestFunc panics, and that the recovered panic value is an error that satisfies the EqualError comparison.
require.PanicsWithError(t, "crazy error", func(){ GoCrazy() })func PanicsWithErrorf(t TestingT, errString string, f assert.PanicTestFunc, msg string, args ...interface{})
Source: require/require.go:1855
PanicsWithErrorf asserts that the code inside the specified PanicTestFunc panics, and that the recovered panic value is an error that satisfies the EqualError comparison.
require.PanicsWithErrorf(t, "crazy error", func(){ GoCrazy() }, "error message %s", "formatted")func PanicsWithValue(t TestingT, expected interface{}, f assert.PanicTestFunc, msgAndArgs ...interface{})
Source: require/require.go:1869
PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that the recovered panic value equals the expected panic value.
require.PanicsWithValue(t, "crazy error", func(){ GoCrazy() })func PanicsWithValuef(t TestingT, expected interface{}, f assert.PanicTestFunc, msg string, args ...interface{})
Source: require/require.go:1883
PanicsWithValuef asserts that the code inside the specified PanicTestFunc panics, and that the recovered panic value equals the expected panic value.
require.PanicsWithValuef(t, "crazy error", func(){ GoCrazy() }, "error message %s", "formatted")func Panicsf(t TestingT, f assert.PanicTestFunc, msg string, args ...interface{})
Source: require/require.go:1896
Panicsf asserts that the code inside the specified PanicTestFunc panics.
require.Panicsf(t, func(){ GoCrazy() }, "error message %s", "formatted")func Positive(t TestingT, e interface{}, msgAndArgs ...interface{})
Source: require/require.go:1910
Positive asserts that the specified element is positive
require.Positive(t, 1)
require.Positive(t, 1.23)func Positivef(t TestingT, e interface{}, msg string, args ...interface{})
Source: require/require.go:1924
Positivef asserts that the specified element is positive
require.Positivef(t, 1, "error message %s", "formatted")
require.Positivef(t, 1.23, "error message %s", "formatted")func Regexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{})
Source: require/require.go:1938
Regexp asserts that a specified regexp matches a string.
require.Regexp(t, regexp.MustCompile("start"), "it's starting")
require.Regexp(t, "start...$", "it's not starting")func Regexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...interface{})
Source: require/require.go:1952
Regexpf asserts that a specified regexp matches a string.
require.Regexpf(t, regexp.MustCompile("start"), "it's starting", "error message %s", "formatted")
require.Regexpf(t, "start...$", "it's not starting", "error message %s", "formatted")func Same(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{})
Source: require/require.go:1968
Same asserts that two pointers reference the same object.
require.Same(t, ptr1, ptr2)Both arguments must be pointer variables. Pointer variable sameness is determined based on the equality of both type and value.
func Samef(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{})
Source: require/require.go:1984
Samef asserts that two pointers reference the same object.
require.Samef(t, ptr1, ptr2, "error message %s", "formatted")Both arguments must be pointer variables. Pointer variable sameness is determined based on the equality of both type and value.
func Subset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...interface{})
Source: require/require.go:2003
Subset asserts that the list (array, slice, or map) contains all elements given in the subset (array, slice, or map). Map elements are key-value pairs unless compared with an array or slice where only the map key is evaluated.
require.Subset(t, [1, 2, 3], [1, 2])
require.Subset(t, {"x": 1, "y": 2}, {"x": 1})
require.Subset(t, [1, 2, 3], {1: "one", 2: "two"})
require.Subset(t, {"x": 1, "y": 2}, ["x"])func Subsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{})
Source: require/require.go:2022
Subsetf asserts that the list (array, slice, or map) contains all elements given in the subset (array, slice, or map). Map elements are key-value pairs unless compared with an array or slice where only the map key is evaluated.
require.Subsetf(t, [1, 2, 3], [1, 2], "error message %s", "formatted")
require.Subsetf(t, {"x": 1, "y": 2}, {"x": 1}, "error message %s", "formatted")
require.Subsetf(t, [1, 2, 3], {1: "one", 2: "two"}, "error message %s", "formatted")
require.Subsetf(t, {"x": 1, "y": 2}, ["x"], "error message %s", "formatted")func True(t TestingT, value bool, msgAndArgs ...interface{})
Source: require/require.go:2035
True asserts that the specified value is true.
require.True(t, myBool)func Truef(t TestingT, value bool, msg string, args ...interface{})
Source: require/require.go:2048
Truef asserts that the specified value is true.
require.Truef(t, myBool, "error message %s", "formatted")func WithinDuration(t TestingT, expected time.Time, actual time.Time, delta time.Duration, msgAndArgs ...interface{})
Source: require/require.go:2061
WithinDuration asserts that the two times are within duration delta of each other.
require.WithinDuration(t, time.Now(), time.Now(), 10*time.Second)func WithinDurationf(t TestingT, expected time.Time, actual time.Time, delta time.Duration, msg string, args ...interface{})
Source: require/require.go:2074
WithinDurationf asserts that the two times are within duration delta of each other.
require.WithinDurationf(t, time.Now(), time.Now(), 10*time.Second, "error message %s", "formatted")func WithinRange(t TestingT, actual time.Time, start time.Time, end time.Time, msgAndArgs ...interface{})
Source: require/require.go:2087
WithinRange asserts that a time is within a time range (inclusive).
require.WithinRange(t, time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second))func WithinRangef(t TestingT, actual time.Time, start time.Time, end time.Time, msg string, args ...interface{})
Source: require/require.go:2100
WithinRangef asserts that a time is within a time range (inclusive).
require.WithinRangef(t, time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second), "error message %s", "formatted")func YAMLEq(t TestingT, expected string, actual string, msgAndArgs ...interface{})
Source: require/require.go:2123
YAMLEq asserts that the first documents in the two YAML strings are equivalent.
expected := `---
key: value
---
key: this is a second document, it is not evaluated
`
actual := `---
key: value
---
key: this is a subsequent document, it is not evaluated
`
require.YAMLEq(t, expected, actual)func YAMLEqf(t TestingT, expected string, actual string, msg string, args ...interface{})
Source: require/require.go:2146
YAMLEqf asserts that the first documents in the two YAML strings are equivalent.
expected := `---
key: value
---
key: this is a second document, it is not evaluated
`
actual := `---
key: value
---
key: this is a subsequent document, it is not evaluated
`
require.YAMLEqf(t, expected, actual, "error message %s", "formatted")func Zero(t TestingT, i interface{}, msgAndArgs ...interface{})
Source: require/require.go:2157
Zero asserts that i is the zero value for its type.
func Zerof(t TestingT, i interface{}, msg string, args ...interface{})
Source: require/require.go:2168
Zerof asserts that i is the zero value for its type.
Types
type Assertions
Source: require/forward_requirements.go:5
Assertions provides assertion methods around the TestingT interface.
type Assertions struct {
// contains filtered or unexported fields
}func (a *Assertions) Condition(comp assert.Comparison, msgAndArgs ...interface{})
Source: require/require_forward.go:13
Condition uses a Comparison to assert a complex condition.
func (a *Assertions) Conditionf(comp assert.Comparison, msg string, args ...interface{})
Source: require/require_forward.go:21
Conditionf uses a Comparison to assert a complex condition.
func (a *Assertions) Contains(s interface{}, contains interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:34
Contains asserts that the specified string, list(array, slice...) or map contains the specified substring or element.
a.Contains("Hello World", "World")
a.Contains(["Hello", "World"], "World")
a.Contains({"Hello": "World"}, "Hello")func (a *Assertions) Containsf(s interface{}, contains interface{}, msg string, args ...interface{})
Source: require/require_forward.go:47
Containsf asserts that the specified string, list(array, slice...) or map contains the specified substring or element.
a.Containsf("Hello World", "World", "error message %s", "formatted")
a.Containsf(["Hello", "World"], "World", "error message %s", "formatted")
a.Containsf({"Hello": "World"}, "Hello", "error message %s", "formatted")func (a *Assertions) DirExists(path string, msgAndArgs ...interface{})
Source: require/require_forward.go:56
DirExists checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists.
func (a *Assertions) DirExistsf(path string, msg string, args ...interface{})
Source: require/require_forward.go:65
DirExistsf checks whether a directory exists in the given path. It also fails if the path is a file rather a directory or there is an error checking whether it exists.
func (a *Assertions) ElementsMatch(listA interface{}, listB interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:77
ElementsMatch asserts that the specified listA(array, slice...) is equal to specified listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, the number of appearances of each of them in both lists should match.
a.ElementsMatch([1, 3, 2, 3], [1, 3, 3, 2])
func (a *Assertions) ElementsMatchf(listA interface{}, listB interface{}, msg string, args ...interface{})
Source: require/require_forward.go:89
ElementsMatchf asserts that the specified listA(array, slice...) is equal to specified listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, the number of appearances of each of them in both lists should match.
a.ElementsMatchf([1, 3, 2, 3], [1, 3, 3, 2], "error message %s", "formatted")
func (a *Assertions) Empty(object interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:109
Empty asserts that the given value is "empty".
Zero values are "empty".
Arrays are "empty" if every element is the zero value of the type (stricter than "empty").
Slices, maps and channels with zero length are "empty".
Pointer values are "empty" if the pointer is nil or if the pointed value is "empty".
a.Empty(obj)func (a *Assertions) Emptyf(object interface{}, msg string, args ...interface{})
Source: require/require_forward.go:129
Emptyf asserts that the given value is "empty".
Zero values are "empty".
Arrays are "empty" if every element is the zero value of the type (stricter than "empty").
Slices, maps and channels with zero length are "empty".
Pointer values are "empty" if the pointer is nil or if the pointed value is "empty".
a.Emptyf(obj, "error message %s", "formatted")func (a *Assertions) Equal(expected interface{}, actual interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:143
Equal asserts that two objects are equal.
a.Equal(123, 123)Pointer variable equality is determined based on the equality of the referenced values (as opposed to the memory addresses). Function equality cannot be determined and will always fail.
func (a *Assertions) EqualError(theError error, errString string, msgAndArgs ...interface{})
Source: require/require_forward.go:155
EqualError asserts that a function returned a non-nil error (i.e. an error) and that it is equal to the provided error.
actualObj, err := SomeFunction()
a.EqualError(err, expectedErrorString)func (a *Assertions) EqualErrorf(theError error, errString string, msg string, args ...interface{})
Source: require/require_forward.go:167
EqualErrorf asserts that a function returned a non-nil error (i.e. an error) and that it is equal to the provided error.
actualObj, err := SomeFunction()
a.EqualErrorf(err, expectedErrorString, "error message %s", "formatted")func (a *Assertions) EqualExportedValues(expected interface{}, actual interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:184
EqualExportedValues asserts that the types of two objects are equal and their public fields are also equal. This is useful for comparing structs that have private fields that could potentially differ.
type S struct {
Exported int
notExported int
}
a.EqualExportedValues(S{1, 2}, S{1, 3}) => true
a.EqualExportedValues(S{1, 2}, S{2, 3}) => falsefunc (a *Assertions) EqualExportedValuesf(expected interface{}, actual interface{}, msg string, args ...interface{})
Source: require/require_forward.go:201
EqualExportedValuesf asserts that the types of two objects are equal and their public fields are also equal. This is useful for comparing structs that have private fields that could potentially differ.
type S struct {
Exported int
notExported int
}
a.EqualExportedValuesf(S{1, 2}, S{1, 3}, "error message %s", "formatted") => true
a.EqualExportedValuesf(S{1, 2}, S{2, 3}, "error message %s", "formatted") => falsefunc (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:212
EqualValues asserts that two objects are equal or convertible to the larger type and equal.
a.EqualValues(uint32(123), int32(123))func (a *Assertions) EqualValuesf(expected interface{}, actual interface{}, msg string, args ...interface{})
Source: require/require_forward.go:223
EqualValuesf asserts that two objects are equal or convertible to the larger type and equal.
a.EqualValuesf(uint32(123), int32(123), "error message %s", "formatted")func (a *Assertions) Equalf(expected interface{}, actual interface{}, msg string, args ...interface{})
Source: require/require_forward.go:237
Equalf asserts that two objects are equal.
a.Equalf(123, 123, "error message %s", "formatted")Pointer variable equality is determined based on the equality of the referenced values (as opposed to the memory addresses). Function equality cannot be determined and will always fail.
func (a *Assertions) Error(err error, msgAndArgs ...interface{})
Source: require/require_forward.go:248
Error asserts that a function returned a non-nil error (ie. an error).
actualObj, err := SomeFunction()
a.Error(err)func (a *Assertions) ErrorAs(err error, target interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:257
ErrorAs asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value. This is a wrapper for errors.As.
func (a *Assertions) ErrorAsf(err error, target interface{}, msg string, args ...interface{})
Source: require/require_forward.go:266
ErrorAsf asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value. This is a wrapper for errors.As.
func (a *Assertions) ErrorContains(theError error, contains string, msgAndArgs ...interface{})
Source: require/require_forward.go:278
ErrorContains asserts that a function returned a non-nil error (i.e. an error) and that the error contains the specified substring.
actualObj, err := SomeFunction()
a.ErrorContains(err, expectedErrorSubString)func (a *Assertions) ErrorContainsf(theError error, contains string, msg string, args ...interface{})
Source: require/require_forward.go:290
ErrorContainsf asserts that a function returned a non-nil error (i.e. an error) and that the error contains the specified substring.
actualObj, err := SomeFunction()
a.ErrorContainsf(err, expectedErrorSubString, "error message %s", "formatted")func (a *Assertions) ErrorIs(err error, target error, msgAndArgs ...interface{})
Source: require/require_forward.go:299
ErrorIs asserts that at least one of the errors in err's chain matches target. This is a wrapper for errors.Is.
func (a *Assertions) ErrorIsf(err error, target error, msg string, args ...interface{})
Source: require/require_forward.go:308
ErrorIsf asserts that at least one of the errors in err's chain matches target. This is a wrapper for errors.Is.
func (a *Assertions) Errorf(err error, msg string, args ...interface{})
Source: require/require_forward.go:319
Errorf asserts that a function returned a non-nil error (ie. an error).
actualObj, err := SomeFunction()
a.Errorf(err, "error message %s", "formatted")func (a *Assertions) Eventually(condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{})
Source: require/require_forward.go:330
Eventually asserts that given condition will be met in waitFor time, periodically checking target function each tick.
a.Eventually(func() bool { return true; }, time.Second, 10*time.Millisecond)func (a *Assertions) EventuallyWithT(condition func(collect *assert.CollectT), waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{})
Source: require/require_forward.go:355
EventuallyWithT asserts that given condition will be met in waitFor time, periodically checking target function each tick. In contrast to Eventually, it supplies a CollectT to the condition function, so that the condition function can use the CollectT to call other assertions. The condition is considered "met" if no errors are raised in a tick. The supplied CollectT collects all errors from one tick (if there are any). If the condition is not met before waitFor, the collected errors of the last tick are copied to t.
externalValue := false
go func() {
time.Sleep(8*time.Second)
externalValue = true
}()
a.EventuallyWithT(func(c *assert.CollectT) {
// add assertions as needed; any assertion failure will fail the current tick
assert.True(c, externalValue, "expected 'externalValue' to be true")
}, 10*time.Second, 1*time.Second, "external state has not changed to 'true'; still false")func (a *Assertions) EventuallyWithTf(condition func(collect *assert.CollectT), waitFor time.Duration, tick time.Duration, msg string, args ...interface{})
Source: require/require_forward.go:380
EventuallyWithTf asserts that given condition will be met in waitFor time, periodically checking target function each tick. In contrast to Eventually, it supplies a CollectT to the condition function, so that the condition function can use the CollectT to call other assertions. The condition is considered "met" if no errors are raised in a tick. The supplied CollectT collects all errors from one tick (if there are any). If the condition is not met before waitFor, the collected errors of the last tick are copied to t.
externalValue := false
go func() {
time.Sleep(8*time.Second)
externalValue = true
}()
a.EventuallyWithTf(func(c *assert.CollectT) {
// add assertions as needed; any assertion failure will fail the current tick
assert.True(c, externalValue, "expected 'externalValue' to be true")
}, 10*time.Second, 1*time.Second, "error message %s", "formatted")func (a *Assertions) Eventuallyf(condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{})
Source: require/require_forward.go:391
Eventuallyf asserts that given condition will be met in waitFor time, periodically checking target function each tick.
a.Eventuallyf(func() bool { return true; }, time.Second, 10*time.Millisecond, "error message %s", "formatted")func (a *Assertions) Exactly(expected interface{}, actual interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:401
Exactly asserts that two objects are equal in value and type.
a.Exactly(int32(123), int64(123))func (a *Assertions) Exactlyf(expected interface{}, actual interface{}, msg string, args ...interface{})
Source: require/require_forward.go:411
Exactlyf asserts that two objects are equal in value and type.
a.Exactlyf(int32(123), int64(123), "error message %s", "formatted")func (a *Assertions) Fail(failureMessage string, msgAndArgs ...interface{})
Source: require/require_forward.go:419
Fail reports a failure through
func (a *Assertions) FailNow(failureMessage string, msgAndArgs ...interface{})
Source: require/require_forward.go:427
FailNow fails test
func (a *Assertions) FailNowf(failureMessage string, msg string, args ...interface{})
Source: require/require_forward.go:435
FailNowf fails test
func (a *Assertions) Failf(failureMessage string, msg string, args ...interface{})
Source: require/require_forward.go:443
Failf reports a failure through
func (a *Assertions) False(value bool, msgAndArgs ...interface{})
Source: require/require_forward.go:453
False asserts that the specified value is false.
a.False(myBool)func (a *Assertions) Falsef(value bool, msg string, args ...interface{})
Source: require/require_forward.go:463
Falsef asserts that the specified value is false.
a.Falsef(myBool, "error message %s", "formatted")func (a *Assertions) FileExists(path string, msgAndArgs ...interface{})
Source: require/require_forward.go:472
FileExists checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file.
func (a *Assertions) FileExistsf(path string, msg string, args ...interface{})
Source: require/require_forward.go:481
FileExistsf checks whether a file exists in the given path. It also fails if the path points to a directory or there is an error when trying to check the file.
func (a *Assertions) Greater(e1 interface{}, e2 interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:493
Greater asserts that the first element is greater than the second
a.Greater(2, 1)
a.Greater(float64(2), float64(1))
a.Greater("b", "a")func (a *Assertions) GreaterOrEqual(e1 interface{}, e2 interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:506
GreaterOrEqual asserts that the first element is greater than or equal to the second
a.GreaterOrEqual(2, 1)
a.GreaterOrEqual(2, 2)
a.GreaterOrEqual("b", "a")
a.GreaterOrEqual("b", "b")func (a *Assertions) GreaterOrEqualf(e1 interface{}, e2 interface{}, msg string, args ...interface{})
Source: require/require_forward.go:519
GreaterOrEqualf asserts that the first element is greater than or equal to the second
a.GreaterOrEqualf(2, 1, "error message %s", "formatted")
a.GreaterOrEqualf(2, 2, "error message %s", "formatted")
a.GreaterOrEqualf("b", "a", "error message %s", "formatted")
a.GreaterOrEqualf("b", "b", "error message %s", "formatted")func (a *Assertions) Greaterf(e1 interface{}, e2 interface{}, msg string, args ...interface{})
Source: require/require_forward.go:531
Greaterf asserts that the first element is greater than the second
a.Greaterf(2, 1, "error message %s", "formatted")
a.Greaterf(float64(2), float64(1), "error message %s", "formatted")
a.Greaterf("b", "a", "error message %s", "formatted")func (a *Assertions) HTTPBodyContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:542
HTTPBodyContains asserts that a specified handler returns a body that contains a string.
a.HTTPBodyContains(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky")func (a *Assertions) HTTPBodyContainsf(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{})
Source: require/require_forward.go:553
HTTPBodyContainsf asserts that a specified handler returns a body that contains a string.
a.HTTPBodyContainsf(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted")func (a *Assertions) HTTPBodyNotContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:564
HTTPBodyNotContains asserts that a specified handler returns a body that does not contain a string.
a.HTTPBodyNotContains(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky")func (a *Assertions) HTTPBodyNotContainsf(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{})
Source: require/require_forward.go:575
HTTPBodyNotContainsf asserts that a specified handler returns a body that does not contain a string.
a.HTTPBodyNotContainsf(myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted")func (a *Assertions) HTTPError(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{})
Source: require/require_forward.go:585
HTTPError asserts that a specified handler returns an error status code.
a.HTTPError(myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}}func (a *Assertions) HTTPErrorf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{})
Source: require/require_forward.go:595
HTTPErrorf asserts that a specified handler returns an error status code.
a.HTTPErrorf(myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}}func (a *Assertions) HTTPRedirect(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{})
Source: require/require_forward.go:605
HTTPRedirect asserts that a specified handler returns a redirect status code.
a.HTTPRedirect(myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}}func (a *Assertions) HTTPRedirectf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{})
Source: require/require_forward.go:615
HTTPRedirectf asserts that a specified handler returns a redirect status code.
a.HTTPRedirectf(myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}}func (a *Assertions) HTTPStatusCode(handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msgAndArgs ...interface{})
Source: require/require_forward.go:625
HTTPStatusCode asserts that a specified handler returns a specified status code.
a.HTTPStatusCode(myHandler, "GET", "/notImplemented", nil, 501)func (a *Assertions) HTTPStatusCodef(handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msg string, args ...interface{})
Source: require/require_forward.go:635
HTTPStatusCodef asserts that a specified handler returns a specified status code.
a.HTTPStatusCodef(myHandler, "GET", "/notImplemented", nil, 501, "error message %s", "formatted")func (a *Assertions) HTTPSuccess(handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{})
Source: require/require_forward.go:645
HTTPSuccess asserts that a specified handler returns a success status code.
a.HTTPSuccess(myHandler, "POST", "http://www.google.com", nil)func (a *Assertions) HTTPSuccessf(handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{})
Source: require/require_forward.go:655
HTTPSuccessf asserts that a specified handler returns a success status code.
a.HTTPSuccessf(myHandler, "POST", "http://www.google.com", nil, "error message %s", "formatted")func (a *Assertions) Implements(interfaceObject interface{}, object interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:665
Implements asserts that an object is implemented by the specified interface.
a.Implements((*MyInterface)(nil), new(MyObject))func (a *Assertions) Implementsf(interfaceObject interface{}, object interface{}, msg string, args ...interface{})
Source: require/require_forward.go:675
Implementsf asserts that an object is implemented by the specified interface.
a.Implementsf((*MyInterface)(nil), new(MyObject), "error message %s", "formatted")func (a *Assertions) InDelta(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{})
Source: require/require_forward.go:685
InDelta asserts that the two numerals are within delta of each other.
a.InDelta(math.Pi, 22/7.0, 0.01)func (a *Assertions) InDeltaMapValues(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{})
Source: require/require_forward.go:693
InDeltaMapValues is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys.
func (a *Assertions) InDeltaMapValuesf(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{})
Source: require/require_forward.go:701
InDeltaMapValuesf is the same as InDelta, but it compares all values between two maps. Both maps must have exactly the same keys.
func (a *Assertions) InDeltaSlice(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{})
Source: require/require_forward.go:709
InDeltaSlice is the same as InDelta, except it compares two slices.
func (a *Assertions) InDeltaSlicef(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{})
Source: require/require_forward.go:717
InDeltaSlicef is the same as InDelta, except it compares two slices.
func (a *Assertions) InDeltaf(expected interface{}, actual interface{}, delta float64, msg string, args ...interface{})
Source: require/require_forward.go:727
InDeltaf asserts that the two numerals are within delta of each other.
a.InDeltaf(math.Pi, 22/7.0, 0.01, "error message %s", "formatted")func (a *Assertions) InEpsilon(expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{})
Source: require/require_forward.go:735
InEpsilon asserts that expected and actual have a relative error less than epsilon
func (a *Assertions) InEpsilonSlice(expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{})
Source: require/require_forward.go:743
InEpsilonSlice is the same as InEpsilon, except it compares each value from two slices.
func (a *Assertions) InEpsilonSlicef(expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{})
Source: require/require_forward.go:751
InEpsilonSlicef is the same as InEpsilon, except it compares each value from two slices.
func (a *Assertions) InEpsilonf(expected interface{}, actual interface{}, epsilon float64, msg string, args ...interface{})
Source: require/require_forward.go:759
InEpsilonf asserts that expected and actual have a relative error less than epsilon
func (a *Assertions) IsDecreasing(object interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:771
IsDecreasing asserts that the collection is decreasing
a.IsDecreasing([]int{2, 1, 0})
a.IsDecreasing([]float{2, 1})
a.IsDecreasing([]string{"b", "a"})func (a *Assertions) IsDecreasingf(object interface{}, msg string, args ...interface{})
Source: require/require_forward.go:783
IsDecreasingf asserts that the collection is decreasing
a.IsDecreasingf([]int{2, 1, 0}, "error message %s", "formatted")
a.IsDecreasingf([]float{2, 1}, "error message %s", "formatted")
a.IsDecreasingf([]string{"b", "a"}, "error message %s", "formatted")func (a *Assertions) IsIncreasing(object interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:795
IsIncreasing asserts that the collection is increasing
a.IsIncreasing([]int{1, 2, 3})
a.IsIncreasing([]float{1, 2})
a.IsIncreasing([]string{"a", "b"})func (a *Assertions) IsIncreasingf(object interface{}, msg string, args ...interface{})
Source: require/require_forward.go:807
IsIncreasingf asserts that the collection is increasing
a.IsIncreasingf([]int{1, 2, 3}, "error message %s", "formatted")
a.IsIncreasingf([]float{1, 2}, "error message %s", "formatted")
a.IsIncreasingf([]string{"a", "b"}, "error message %s", "formatted")func (a *Assertions) IsNonDecreasing(object interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:819
IsNonDecreasing asserts that the collection is not decreasing
a.IsNonDecreasing([]int{1, 1, 2})
a.IsNonDecreasing([]float{1, 2})
a.IsNonDecreasing([]string{"a", "b"})func (a *Assertions) IsNonDecreasingf(object interface{}, msg string, args ...interface{})
Source: require/require_forward.go:831
IsNonDecreasingf asserts that the collection is not decreasing
a.IsNonDecreasingf([]int{1, 1, 2}, "error message %s", "formatted")
a.IsNonDecreasingf([]float{1, 2}, "error message %s", "formatted")
a.IsNonDecreasingf([]string{"a", "b"}, "error message %s", "formatted")func (a *Assertions) IsNonIncreasing(object interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:843
IsNonIncreasing asserts that the collection is not increasing
a.IsNonIncreasing([]int{2, 1, 1})
a.IsNonIncreasing([]float{2, 1})
a.IsNonIncreasing([]string{"b", "a"})func (a *Assertions) IsNonIncreasingf(object interface{}, msg string, args ...interface{})
Source: require/require_forward.go:855
IsNonIncreasingf asserts that the collection is not increasing
a.IsNonIncreasingf([]int{2, 1, 1}, "error message %s", "formatted")
a.IsNonIncreasingf([]float{2, 1}, "error message %s", "formatted")
a.IsNonIncreasingf([]string{"b", "a"}, "error message %s", "formatted")func (a *Assertions) IsNotType(theType interface{}, object interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:865
IsNotType asserts that the specified objects are not of the same type.
a.IsNotType(&NotMyStruct{}, &MyStruct{})func (a *Assertions) IsNotTypef(theType interface{}, object interface{}, msg string, args ...interface{})
Source: require/require_forward.go:875
IsNotTypef asserts that the specified objects are not of the same type.
a.IsNotTypef(&NotMyStruct{}, &MyStruct{}, "error message %s", "formatted")func (a *Assertions) IsType(expectedType interface{}, object interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:885
IsType asserts that the specified objects are of the same type.
a.IsType(&MyStruct{}, &MyStruct{})func (a *Assertions) IsTypef(expectedType interface{}, object interface{}, msg string, args ...interface{})
Source: require/require_forward.go:895
IsTypef asserts that the specified objects are of the same type.
a.IsTypef(&MyStruct{}, &MyStruct{}, "error message %s", "formatted")func (a *Assertions) JSONEq(expected string, actual string, msgAndArgs ...interface{})
Source: require/require_forward.go:905
JSONEq asserts that two JSON strings are equivalent.
a.JSONEq(`{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`)func (a *Assertions) JSONEqf(expected string, actual string, msg string, args ...interface{})
Source: require/require_forward.go:915
JSONEqf asserts that two JSON strings are equivalent.
a.JSONEqf(`{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`, "error message %s", "formatted")func (a *Assertions) Len(object interface{}, length int, msgAndArgs ...interface{})
Source: require/require_forward.go:926
Len asserts that the specified object has specific length. Len also fails if the object has a type that len() not accept.
a.Len(mySlice, 3)func (a *Assertions) Lenf(object interface{}, length int, msg string, args ...interface{})
Source: require/require_forward.go:937
Lenf asserts that the specified object has specific length. Lenf also fails if the object has a type that len() not accept.
a.Lenf(mySlice, 3, "error message %s", "formatted")func (a *Assertions) Less(e1 interface{}, e2 interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:949
Less asserts that the first element is less than the second
a.Less(1, 2)
a.Less(float64(1), float64(2))
a.Less("a", "b")func (a *Assertions) LessOrEqual(e1 interface{}, e2 interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:962
LessOrEqual asserts that the first element is less than or equal to the second
a.LessOrEqual(1, 2)
a.LessOrEqual(2, 2)
a.LessOrEqual("a", "b")
a.LessOrEqual("b", "b")func (a *Assertions) LessOrEqualf(e1 interface{}, e2 interface{}, msg string, args ...interface{})
Source: require/require_forward.go:975
LessOrEqualf asserts that the first element is less than or equal to the second
a.LessOrEqualf(1, 2, "error message %s", "formatted")
a.LessOrEqualf(2, 2, "error message %s", "formatted")
a.LessOrEqualf("a", "b", "error message %s", "formatted")
a.LessOrEqualf("b", "b", "error message %s", "formatted")func (a *Assertions) Lessf(e1 interface{}, e2 interface{}, msg string, args ...interface{})
Source: require/require_forward.go:987
Lessf asserts that the first element is less than the second
a.Lessf(1, 2, "error message %s", "formatted")
a.Lessf(float64(1), float64(2), "error message %s", "formatted")
a.Lessf("a", "b", "error message %s", "formatted")func (a *Assertions) Negative(e interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:998
Negative asserts that the specified element is negative
a.Negative(-1)
a.Negative(-1.23)func (a *Assertions) Negativef(e interface{}, msg string, args ...interface{})
Source: require/require_forward.go:1009
Negativef asserts that the specified element is negative
a.Negativef(-1, "error message %s", "formatted")
a.Negativef(-1.23, "error message %s", "formatted")func (a *Assertions) Never(condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{})
Source: require/require_forward.go:1020
Never asserts that the given condition doesn't satisfy in waitFor time, periodically checking the target function each tick.
a.Never(func() bool { return false; }, time.Second, 10*time.Millisecond)func (a *Assertions) Neverf(condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{})
Source: require/require_forward.go:1031
Neverf asserts that the given condition doesn't satisfy in waitFor time, periodically checking the target function each tick.
a.Neverf(func() bool { return false; }, time.Second, 10*time.Millisecond, "error message %s", "formatted")func (a *Assertions) Nil(object interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:1041
Nil asserts that the specified object is nil.
a.Nil(err)func (a *Assertions) Nilf(object interface{}, msg string, args ...interface{})
Source: require/require_forward.go:1051
Nilf asserts that the specified object is nil.
a.Nilf(err, "error message %s", "formatted")func (a *Assertions) NoDirExists(path string, msgAndArgs ...interface{})
Source: require/require_forward.go:1060
NoDirExists checks whether a directory does not exist in the given path. It fails if the path points to an existing _directory_ only.
func (a *Assertions) NoDirExistsf(path string, msg string, args ...interface{})
Source: require/require_forward.go:1069
NoDirExistsf checks whether a directory does not exist in the given path. It fails if the path points to an existing _directory_ only.
func (a *Assertions) NoError(err error, msgAndArgs ...interface{})
Source: require/require_forward.go:1081
NoError asserts that a function returned a nil error (ie. no error).
actualObj, err := SomeFunction()
a.NoError(err)
a.Equal(expectedObj, actualObj)func (a *Assertions) NoErrorf(err error, msg string, args ...interface{})
Source: require/require_forward.go:1093
NoErrorf asserts that a function returned a nil error (ie. no error).
actualObj, err := SomeFunction()
a.NoErrorf(err, "error message %s", "formatted")
a.Equal(expectedObj, actualObj)func (a *Assertions) NoFileExists(path string, msgAndArgs ...interface{})
Source: require/require_forward.go:1102
NoFileExists checks whether a file does not exist in a given path. It fails if the path points to an existing _file_ only.
func (a *Assertions) NoFileExistsf(path string, msg string, args ...interface{})
Source: require/require_forward.go:1111
NoFileExistsf checks whether a file does not exist in a given path. It fails if the path points to an existing _file_ only.
func (a *Assertions) NotContains(s interface{}, contains interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:1124
NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the specified substring or element.
a.NotContains("Hello World", "Earth")
a.NotContains(["Hello", "World"], "Earth")
a.NotContains({"Hello": "World"}, "Earth")func (a *Assertions) NotContainsf(s interface{}, contains interface{}, msg string, args ...interface{})
Source: require/require_forward.go:1137
NotContainsf asserts that the specified string, list(array, slice...) or map does NOT contain the specified substring or element.
a.NotContainsf("Hello World", "Earth", "error message %s", "formatted")
a.NotContainsf(["Hello", "World"], "Earth", "error message %s", "formatted")
a.NotContainsf({"Hello": "World"}, "Earth", "error message %s", "formatted")func (a *Assertions) NotElementsMatch(listA interface{}, listB interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:1154
NotElementsMatch asserts that the specified listA(array, slice...) is NOT equal to specified listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, the number of appearances of each of them in both lists should not match. This is an inverse of ElementsMatch.
a.NotElementsMatch([1, 1, 2, 3], [1, 1, 2, 3]) -> false
a.NotElementsMatch([1, 1, 2, 3], [1, 2, 3]) -> true
a.NotElementsMatch([1, 2, 3], [1, 2, 4]) -> true
func (a *Assertions) NotElementsMatchf(listA interface{}, listB interface{}, msg string, args ...interface{})
Source: require/require_forward.go:1171
NotElementsMatchf asserts that the specified listA(array, slice...) is NOT equal to specified listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, the number of appearances of each of them in both lists should not match. This is an inverse of ElementsMatch.
a.NotElementsMatchf([1, 1, 2, 3], [1, 1, 2, 3], "error message %s", "formatted") -> false
a.NotElementsMatchf([1, 1, 2, 3], [1, 2, 3], "error message %s", "formatted") -> true
a.NotElementsMatchf([1, 2, 3], [1, 2, 4], "error message %s", "formatted") -> true
func (a *Assertions) NotEmpty(object interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:1182
NotEmpty asserts that the specified object is NOT Empty.
a.NotEmpty(obj)
a.Equal("two", obj[1])func (a *Assertions) NotEmptyf(object interface{}, msg string, args ...interface{})
Source: require/require_forward.go:1193
NotEmptyf asserts that the specified object is NOT Empty.
a.NotEmptyf(obj, "error message %s", "formatted")
a.Equal("two", obj[1])func (a *Assertions) NotEqual(expected interface{}, actual interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:1206
NotEqual asserts that the specified values are NOT equal.
a.NotEqual(obj1, obj2)Pointer variable equality is determined based on the equality of the referenced values (as opposed to the memory addresses).
func (a *Assertions) NotEqualValues(expected interface{}, actual interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:1216
NotEqualValues asserts that two objects are not equal even when converted to the same type
a.NotEqualValues(obj1, obj2)func (a *Assertions) NotEqualValuesf(expected interface{}, actual interface{}, msg string, args ...interface{})
Source: require/require_forward.go:1226
NotEqualValuesf asserts that two objects are not equal even when converted to the same type
a.NotEqualValuesf(obj1, obj2, "error message %s", "formatted")func (a *Assertions) NotEqualf(expected interface{}, actual interface{}, msg string, args ...interface{})
Source: require/require_forward.go:1239
NotEqualf asserts that the specified values are NOT equal.
a.NotEqualf(obj1, obj2, "error message %s", "formatted")Pointer variable equality is determined based on the equality of the referenced values (as opposed to the memory addresses).
func (a *Assertions) NotErrorAs(err error, target interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:1248
NotErrorAs asserts that none of the errors in err's chain matches target, but if so, sets target to that error value.
func (a *Assertions) NotErrorAsf(err error, target interface{}, msg string, args ...interface{})
Source: require/require_forward.go:1257
NotErrorAsf asserts that none of the errors in err's chain matches target, but if so, sets target to that error value.
func (a *Assertions) NotErrorIs(err error, target error, msgAndArgs ...interface{})
Source: require/require_forward.go:1266
NotErrorIs asserts that none of the errors in err's chain matches target. This is a wrapper for errors.Is.
func (a *Assertions) NotErrorIsf(err error, target error, msg string, args ...interface{})
Source: require/require_forward.go:1275
NotErrorIsf asserts that none of the errors in err's chain matches target. This is a wrapper for errors.Is.
func (a *Assertions) NotImplements(interfaceObject interface{}, object interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:1285
NotImplements asserts that an object does not implement the specified interface.
a.NotImplements((*MyInterface)(nil), new(MyObject))func (a *Assertions) NotImplementsf(interfaceObject interface{}, object interface{}, msg string, args ...interface{})
Source: require/require_forward.go:1295
NotImplementsf asserts that an object does not implement the specified interface.
a.NotImplementsf((*MyInterface)(nil), new(MyObject), "error message %s", "formatted")func (a *Assertions) NotNil(object interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:1305
NotNil asserts that the specified object is not nil.
a.NotNil(err)func (a *Assertions) NotNilf(object interface{}, msg string, args ...interface{})
Source: require/require_forward.go:1315
NotNilf asserts that the specified object is not nil.
a.NotNilf(err, "error message %s", "formatted")func (a *Assertions) NotPanics(f assert.PanicTestFunc, msgAndArgs ...interface{})
Source: require/require_forward.go:1325
NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic.
a.NotPanics(func(){ RemainCalm() })func (a *Assertions) NotPanicsf(f assert.PanicTestFunc, msg string, args ...interface{})
Source: require/require_forward.go:1335
NotPanicsf asserts that the code inside the specified PanicTestFunc does NOT panic.
a.NotPanicsf(func(){ RemainCalm() }, "error message %s", "formatted")func (a *Assertions) NotRegexp(rx interface{}, str interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:1346
NotRegexp asserts that a specified regexp does not match a string.
a.NotRegexp(regexp.MustCompile("starts"), "it's starting")
a.NotRegexp("^start", "it's not starting")func (a *Assertions) NotRegexpf(rx interface{}, str interface{}, msg string, args ...interface{})
Source: require/require_forward.go:1357
NotRegexpf asserts that a specified regexp does not match a string.
a.NotRegexpf(regexp.MustCompile("starts"), "it's starting", "error message %s", "formatted")
a.NotRegexpf("^start", "it's not starting", "error message %s", "formatted")func (a *Assertions) NotSame(expected interface{}, actual interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:1370
NotSame asserts that two pointers do not reference the same object.
a.NotSame(ptr1, ptr2)Both arguments must be pointer variables. Pointer variable sameness is determined based on the equality of both type and value.
func (a *Assertions) NotSamef(expected interface{}, actual interface{}, msg string, args ...interface{})
Source: require/require_forward.go:1383
NotSamef asserts that two pointers do not reference the same object.
a.NotSamef(ptr1, ptr2, "error message %s", "formatted")Both arguments must be pointer variables. Pointer variable sameness is determined based on the equality of both type and value.
func (a *Assertions) NotSubset(list interface{}, subset interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:1399
NotSubset asserts that the list (array, slice, or map) does NOT contain all elements given in the subset (array, slice, or map). Map elements are key-value pairs unless compared with an array or slice where only the map key is evaluated.
a.NotSubset([1, 3, 4], [1, 2])
a.NotSubset({"x": 1, "y": 2}, {"z": 3})
a.NotSubset([1, 3, 4], {1: "one", 2: "two"})
a.NotSubset({"x": 1, "y": 2}, ["z"])func (a *Assertions) NotSubsetf(list interface{}, subset interface{}, msg string, args ...interface{})
Source: require/require_forward.go:1415
NotSubsetf asserts that the list (array, slice, or map) does NOT contain all elements given in the subset (array, slice, or map). Map elements are key-value pairs unless compared with an array or slice where only the map key is evaluated.
a.NotSubsetf([1, 3, 4], [1, 2], "error message %s", "formatted")
a.NotSubsetf({"x": 1, "y": 2}, {"z": 3}, "error message %s", "formatted")
a.NotSubsetf([1, 3, 4], {1: "one", 2: "two"}, "error message %s", "formatted")
a.NotSubsetf({"x": 1, "y": 2}, ["z"], "error message %s", "formatted")func (a *Assertions) NotZero(i interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:1423
NotZero asserts that i is not the zero value for its type.
func (a *Assertions) NotZerof(i interface{}, msg string, args ...interface{})
Source: require/require_forward.go:1431
NotZerof asserts that i is not the zero value for its type.
func (a *Assertions) Panics(f assert.PanicTestFunc, msgAndArgs ...interface{})
Source: require/require_forward.go:1441
Panics asserts that the code inside the specified PanicTestFunc panics.
a.Panics(func(){ GoCrazy() })func (a *Assertions) PanicsWithError(errString string, f assert.PanicTestFunc, msgAndArgs ...interface{})
Source: require/require_forward.go:1453
PanicsWithError asserts that the code inside the specified PanicTestFunc panics, and that the recovered panic value is an error that satisfies the EqualError comparison.
a.PanicsWithError("crazy error", func(){ GoCrazy() })func (a *Assertions) PanicsWithErrorf(errString string, f assert.PanicTestFunc, msg string, args ...interface{})
Source: require/require_forward.go:1465
PanicsWithErrorf asserts that the code inside the specified PanicTestFunc panics, and that the recovered panic value is an error that satisfies the EqualError comparison.
a.PanicsWithErrorf("crazy error", func(){ GoCrazy() }, "error message %s", "formatted")func (a *Assertions) PanicsWithValue(expected interface{}, f assert.PanicTestFunc, msgAndArgs ...interface{})
Source: require/require_forward.go:1476
PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that the recovered panic value equals the expected panic value.
a.PanicsWithValue("crazy error", func(){ GoCrazy() })func (a *Assertions) PanicsWithValuef(expected interface{}, f assert.PanicTestFunc, msg string, args ...interface{})
Source: require/require_forward.go:1487
PanicsWithValuef asserts that the code inside the specified PanicTestFunc panics, and that the recovered panic value equals the expected panic value.
a.PanicsWithValuef("crazy error", func(){ GoCrazy() }, "error message %s", "formatted")func (a *Assertions) Panicsf(f assert.PanicTestFunc, msg string, args ...interface{})
Source: require/require_forward.go:1497
Panicsf asserts that the code inside the specified PanicTestFunc panics.
a.Panicsf(func(){ GoCrazy() }, "error message %s", "formatted")func (a *Assertions) Positive(e interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:1508
Positive asserts that the specified element is positive
a.Positive(1)
a.Positive(1.23)func (a *Assertions) Positivef(e interface{}, msg string, args ...interface{})
Source: require/require_forward.go:1519
Positivef asserts that the specified element is positive
a.Positivef(1, "error message %s", "formatted")
a.Positivef(1.23, "error message %s", "formatted")func (a *Assertions) Regexp(rx interface{}, str interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:1530
Regexp asserts that a specified regexp matches a string.
a.Regexp(regexp.MustCompile("start"), "it's starting")
a.Regexp("start...$", "it's not starting")func (a *Assertions) Regexpf(rx interface{}, str interface{}, msg string, args ...interface{})
Source: require/require_forward.go:1541
Regexpf asserts that a specified regexp matches a string.
a.Regexpf(regexp.MustCompile("start"), "it's starting", "error message %s", "formatted")
a.Regexpf("start...$", "it's not starting", "error message %s", "formatted")func (a *Assertions) Same(expected interface{}, actual interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:1554
Same asserts that two pointers reference the same object.
a.Same(ptr1, ptr2)Both arguments must be pointer variables. Pointer variable sameness is determined based on the equality of both type and value.
func (a *Assertions) Samef(expected interface{}, actual interface{}, msg string, args ...interface{})
Source: require/require_forward.go:1567
Samef asserts that two pointers reference the same object.
a.Samef(ptr1, ptr2, "error message %s", "formatted")Both arguments must be pointer variables. Pointer variable sameness is determined based on the equality of both type and value.
func (a *Assertions) Subset(list interface{}, subset interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:1583
Subset asserts that the list (array, slice, or map) contains all elements given in the subset (array, slice, or map). Map elements are key-value pairs unless compared with an array or slice where only the map key is evaluated.
a.Subset([1, 2, 3], [1, 2])
a.Subset({"x": 1, "y": 2}, {"x": 1})
a.Subset([1, 2, 3], {1: "one", 2: "two"})
a.Subset({"x": 1, "y": 2}, ["x"])func (a *Assertions) Subsetf(list interface{}, subset interface{}, msg string, args ...interface{})
Source: require/require_forward.go:1599
Subsetf asserts that the list (array, slice, or map) contains all elements given in the subset (array, slice, or map). Map elements are key-value pairs unless compared with an array or slice where only the map key is evaluated.
a.Subsetf([1, 2, 3], [1, 2], "error message %s", "formatted")
a.Subsetf({"x": 1, "y": 2}, {"x": 1}, "error message %s", "formatted")
a.Subsetf([1, 2, 3], {1: "one", 2: "two"}, "error message %s", "formatted")
a.Subsetf({"x": 1, "y": 2}, ["x"], "error message %s", "formatted")func (a *Assertions) True(value bool, msgAndArgs ...interface{})
Source: require/require_forward.go:1609
True asserts that the specified value is true.
a.True(myBool)func (a *Assertions) Truef(value bool, msg string, args ...interface{})
Source: require/require_forward.go:1619
Truef asserts that the specified value is true.
a.Truef(myBool, "error message %s", "formatted")func (a *Assertions) WithinDuration(expected time.Time, actual time.Time, delta time.Duration, msgAndArgs ...interface{})
Source: require/require_forward.go:1629
WithinDuration asserts that the two times are within duration delta of each other.
a.WithinDuration(time.Now(), time.Now(), 10*time.Second)func (a *Assertions) WithinDurationf(expected time.Time, actual time.Time, delta time.Duration, msg string, args ...interface{})
Source: require/require_forward.go:1639
WithinDurationf asserts that the two times are within duration delta of each other.
a.WithinDurationf(time.Now(), time.Now(), 10*time.Second, "error message %s", "formatted")func (a *Assertions) WithinRange(actual time.Time, start time.Time, end time.Time, msgAndArgs ...interface{})
Source: require/require_forward.go:1649
WithinRange asserts that a time is within a time range (inclusive).
a.WithinRange(time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second))func (a *Assertions) WithinRangef(actual time.Time, start time.Time, end time.Time, msg string, args ...interface{})
Source: require/require_forward.go:1659
WithinRangef asserts that a time is within a time range (inclusive).
a.WithinRangef(time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second), "error message %s", "formatted")func (a *Assertions) YAMLEq(expected string, actual string, msgAndArgs ...interface{})
Source: require/require_forward.go:1679
YAMLEq asserts that the first documents in the two YAML strings are equivalent.
expected := `---
key: value
---
key: this is a second document, it is not evaluated
`
actual := `---
key: value
---
key: this is a subsequent document, it is not evaluated
`
a.YAMLEq(expected, actual)func (a *Assertions) YAMLEqf(expected string, actual string, msg string, args ...interface{})
Source: require/require_forward.go:1699
YAMLEqf asserts that the first documents in the two YAML strings are equivalent.
expected := `---
key: value
---
key: this is a second document, it is not evaluated
`
actual := `---
key: value
---
key: this is a subsequent document, it is not evaluated
`
a.YAMLEqf(expected, actual, "error message %s", "formatted")func (a *Assertions) Zero(i interface{}, msgAndArgs ...interface{})
Source: require/require_forward.go:1707
Zero asserts that i is the zero value for its type.
func (a *Assertions) Zerof(i interface{}, msg string, args ...interface{})
Source: require/require_forward.go:1715
Zerof asserts that i is the zero value for its type.
type BoolAssertionFunc
Source: require/requirements.go:23
BoolAssertionFunc is a common function prototype when validating a bool value. Can be useful for table driven tests.
type BoolAssertionFunc = func(TestingT, bool, ...interface{})Example
{
t := &testing.T{}
isOkay := func(x int) bool {
return x >= 42
}
tests := []struct {
name string
arg int
assertion BoolAssertionFunc
}{
{"-1 is bad", -1, False},
{"42 is good", 42, True},
{"41 is bad", 41, False},
{"45 is cool", 45, True},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
tt.assertion(t, isOkay(tt.arg))
})
}
}type ComparisonAssertionFunc
Source: require/requirements.go:15
ComparisonAssertionFunc is a common function prototype when comparing two values. Can be useful for table driven tests.
type ComparisonAssertionFunc = func(TestingT, interface{}, interface{}, ...interface{})Example
{
t := &testing.T{}
adder := func(x, y int) int {
return x + y
}
type args struct {
x int
y int
}
tests := []struct {
name string
args args
expect int
assertion ComparisonAssertionFunc
}{
{"2+2=4", args{2, 2}, 4, Equal},
{"2+2!=5", args{2, 2}, 5, NotEqual},
{"2+3==5", args{2, 3}, 5, Exactly},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
tt.assertion(t, tt.expect, adder(tt.args.x, tt.args.y))
})
}
}type ErrorAssertionFunc
Source: require/requirements.go:27
ErrorAssertionFunc is a common function prototype when validating an error value. Can be useful for table driven tests.
type ErrorAssertionFunc = func(TestingT, error, ...interface{})Example
{
t := &testing.T{}
dumbParseNum := func(input string, v interface{}) error {
return json.Unmarshal([]byte(input), v)
}
tests := []struct {
name string
arg string
assertion ErrorAssertionFunc
}{
{"1.2 is number", "1.2", NoError},
{"1.2.3 not number", "1.2.3", Error},
{"true is not number", "true", Error},
{"3 is number", "3", NoError},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
var x float64
tt.assertion(t, dumbParseNum(tt.arg, &x))
})
}
}type TestingT
Source: require/requirements.go:4
TestingT is an interface wrapper around *testing.T
type TestingT interface {
Errorf(format string, args ...interface{})
FailNow()
}Methods
Errorf func(format string, args ...interface{})FailNow func()
type ValueAssertionFunc
Source: require/requirements.go:19
ValueAssertionFunc is a common function prototype when validating a single value. Can be useful for table driven tests.
type ValueAssertionFunc = func(TestingT, interface{}, ...interface{})Example
{
t := &testing.T{}
dumbParse := func(input string) interface{} {
var x interface{}
json.Unmarshal([]byte(input), &x)
return x
}
tests := []struct {
name string
arg string
assertion ValueAssertionFunc
}{
{"true is not nil", "true", NotNil},
{"empty string is nil", "", Nil},
{"zero is not nil", "0", NotNil},
{"zero is zero", "0", Zero},
{"false is zero", "false", Zero},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
tt.assertion(t, dumbParse(tt.arg))
})
}
}