client.WriteStub = func(p []byte) (int, error) { copiedToClient = string(p) return len(expectedText), nil } go bridge.Connect() defer bridge.Close() Eventually(backend.ReadCallCount).Should(Equal(2)) Eventually(client.WriteCallCount).Should(Equal(1)) Expect(copiedToClient).To(Equal(expectedText)) }) }) Context("when the client returns an error", func() { BeforeEach(func() { client.ReadReturns(0, errors.New("Error reading from client")) }) It("Closes the backend", func() { bridge.Connect() Expect(backend.CloseCallCount()).To(Equal(1)) }) }) Context("when the client returns EOF", func() { BeforeEach(func() { client.ReadStub = func(p []byte) (int, error) { return 0, io.EOF } })