diff --git a/verify.go b/verify.go index a4c76ba..607641d 100644 --- a/verify.go +++ b/verify.go @@ -21,3 +21,8 @@ func (verifier *CallVerifier) HasBeenCalled(expectedCallsCount int) []*Invocatio func (verifier *CallVerifier) HasBeenCalledOnce() *Invocation { return verifier.HasBeenCalled(1)[0] } + +// HasNotBeenCalled asserts that no HTTP call has been made. +func (verifier *CallVerifier) HasNotBeenCalled() { + _ = verifier.HasBeenCalled(0) +} diff --git a/verify_test.go b/verify_test.go index 2cd166e..2173a70 100644 --- a/verify_test.go +++ b/verify_test.go @@ -155,3 +155,41 @@ func TestVerifyingSingleInvocationReturnsThePerformedCall(t *testing.T) { WithStringPayload("Hello"). WithHeader("Content-Type", "text/plain") } + +func TestVerifyingNoInvocationPasses(t *testing.T) { + t.Parallel() + // Arrange + testState := NewTestingMock(t) + mockedAPI := API(testState) + defer func() { mockedAPI.Close() }() + + mockedAPI. + Stub(http.MethodGet, "/endpoint"). + WithStatusCode(http.StatusOK) + + // Act + mockedAPI.Verify(http.MethodGet, "/endpoint").HasNotBeenCalled() + + // Assert + testState.assertDidNotFailed() +} + +func TestVerifyingNoInvocationFails(t *testing.T) { + t.Parallel() + // Arrange + testState := NewTestingMock(t) + mockedAPI := API(testState) + defer func() { mockedAPI.Close() }() + + mockedAPI. + Stub(http.MethodGet, "/endpoint"). + WithStatusCode(http.StatusOK) + + // Act + client := http.Client{} + _, _ = client.Get(mockedAPI.GetURL().String() + "/endpoint") + mockedAPI.Verify(http.MethodGet, "/endpoint").HasNotBeenCalled() + + // Assert + testState.assertFailedWithFatal() +}