diff --git a/assert/forward_assertions.go b/assert/forward_assertions.go index f190432..7172074 100644 --- a/assert/forward_assertions.go +++ b/assert/forward_assertions.go @@ -191,3 +191,16 @@ func (a *Assertions) NoError(theError error, msgAndArgs ...interface{}) bool { func (a *Assertions) Error(theError error, msgAndArgs ...interface{}) bool { return Error(a.t, theError, msgAndArgs...) } + +// EqualError asserts that a function returned an error (i.e. not `nil`) +// and that it is equal to the provided error. +// +// actualObj, err := SomeFunction() +// if assert.Error(err, "An error was expected") { +// assert.Equal(err, expectedError) +// } +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) EqualError(theError error, errString string, msgAndArgs ...interface{}) bool { + return EqualError(a.t, theError, errString, msgAndArgs...) +} diff --git a/assert/forward_assertions_test.go b/assert/forward_assertions_test.go index c478544..291b2ec 100644 --- a/assert/forward_assertions_test.go +++ b/assert/forward_assertions_test.go @@ -267,6 +267,23 @@ func TestErrorWrapper(t *testing.T) { } +func TestEqualErrorWrapper(t *testing.T) { + assert := New(t) + mockAssert := New(new(testing.T)) + + // start with a nil error + var err error + assert.False(mockAssert.EqualError(err, ""), + "EqualError should return false for nil arg") + + // now set an error + err = errors.New("some error") + assert.False(mockAssert.EqualError(err, "Not some error"), + "EqualError should return false for different error string") + assert.True(mockAssert.EqualError(err, "some error"), + "EqualError should return true") +} + func TestEmptyWrapper(t *testing.T) { assert := New(t) mockAssert := New(new(testing.T))