fakeClient.StatusCode = 200 _, err := requestRetryable.Attempt() Expect(err).ToNot(HaveOccurred()) resp := requestRetryable.Response() Expect(readString(resp.Body)).To(Equal("fake-response-body")) Expect(resp.StatusCode).To(Equal(200)) Expect(fakeClient.CallCount).To(Equal(1)) Expect(fakeClient.Requests).To(ContainElement(request)) }) Context("when request returns an error", func() { BeforeEach(func() { fakeClient.Error = errors.New("fake-response-error") }) It("is retryable", func() { isRetryable, err := requestRetryable.Attempt() Expect(err).To(HaveOccurred()) Expect(err.Error()).To(ContainSubstring("fake-response-error")) Expect(isRetryable).To(BeTrue()) }) }) Context("when response status code is not between 200 and 300", func() { BeforeEach(func() { fakeClient.SetMessage("fake-response-body") fakeClient.StatusCode = 404 })