Skip to content

Repository files navigation

errassert: Simple table driven Go tests error assertions

go referencelicenseCIcoveragego report

Overview

  • set error assertion in a table driven test declaration
  • provides similar experience as Testify's ErrorAssertionFunc
  • define custom error assertions
  • combine assertions with errassert.Want
  • support assertions for gRPC status errors

Example

funcTest(t*testing.T) {
typetestCasestruct {
instringwantinterrassert errassert.ErrorAssertion
}
run:=func(t*testing.T, tctestCase) {
_, err:=strconv.Atoi(tc.in)
tc.errassert.Require(t, err)
}
testCases:=map[string]testCase{
"ok": {
in: "42",
want: 42,
errassert: errassert.NilError(),
},
"invalid input fails": {
in: "invalid input",
errassert: errassert.SomeError(),
},
"empty input cause invalid syntax error": {
in: "",
// Common basic assertions.errassert: errassert.ErrorEndsWith("invalid syntax"),
},
"invalid input fails with input": {
in: "input",
// Combine basic assertions.errassert: errassert.Want(
errassert.ErrorContains("\"input\""),
errassert.ErrorEndsWith("invalid syntax"),
),
},
}
forname, tc:=rangetestCases {
t.Run(name, func(t*testing.T) { run(t, tc) })
}
}

Credits

Based on experience within @h2oai.

About

Simple table driven Go tests error assertions

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages