mirror of https://github.com/stretchr/testify.git
Add a `PanicAssertionFunc` to ease writing table-driven tests for panic assertion. Closes #730pull/1567/head
parent
bb548d0473
commit
8585d8de96
|
@ -45,6 +45,10 @@ type BoolAssertionFunc func(TestingT, bool, ...interface{}) bool
|
|||
// for table driven tests.
|
||||
type ErrorAssertionFunc func(TestingT, error, ...interface{}) bool
|
||||
|
||||
// PanicAssertionFunc is a common function prototype when validating a panic value. Can be useful
|
||||
// for table driven tests.
|
||||
type PanicAssertionFunc = func(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool
|
||||
|
||||
// Comparison is a custom function that returns true on success and false on failure
|
||||
type Comparison func() (success bool)
|
||||
|
||||
|
|
|
@ -2789,6 +2789,42 @@ func TestErrorAssertionFunc(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func ExamplePanicAssertionFunc() {
|
||||
t := &testing.T{} // provided by test
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
panicFn PanicTestFunc
|
||||
assertion PanicAssertionFunc
|
||||
}{
|
||||
{"with panic", func() { panic(nil) }, Panics},
|
||||
{"without panic", func() {}, NotPanics},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
tt.assertion(t, tt.panicFn)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestPanicAssertionFunc(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
panicFn PanicTestFunc
|
||||
assertion PanicAssertionFunc
|
||||
}{
|
||||
{"not panic", func() {}, NotPanics},
|
||||
{"panic", func() { panic(nil) }, Panics},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
tt.assertion(t, tt.panicFn)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestEventuallyFalse(t *testing.T) {
|
||||
mockT := new(testing.T)
|
||||
|
||||
|
|
Loading…
Reference in New Issue