Describe("Attempt", func() { var ( fakeAgentClient *fakeagentclient.FakeAgentClient pingRetryable boshretry.Retryable ) BeforeEach(func() { fakeAgentClient = &fakeagentclient.FakeAgentClient{} pingRetryable = NewPingRetryable(fakeAgentClient) }) It("tells the agent client to ping", func() { isRetryable, err := pingRetryable.Attempt() Expect(err).ToNot(HaveOccurred()) Expect(isRetryable).To(BeTrue()) Expect(fakeAgentClient.PingCallCount()).To(Equal(1)) }) Context("when pinging fails", func() { BeforeEach(func() { fakeAgentClient.PingReturns("", errors.New("fake-agent-client-ping-error")) }) It("returns an error", func() { isRetryable, err := pingRetryable.Attempt() Expect(err).To(HaveOccurred()) Expect(isRetryable).To(BeTrue()) Expect(err.Error()).To(ContainSubstring("fake-agent-client-ping-error")) }) }) })