Convert BufferedInputStream to String in Clojure
Asked Answered
E

2

10

mock.request is returning the response :body as a BufferedInputStream. I need to print and compare this as a string. How do I convert it?

When I try to pass response as a message to my assertion, I see a raw output, e.g.

(is (= 200 (:status response) (:body response)))
=> #object[java.io.BufferedInputStream 0x211bdf40 java.io.BufferedInputStream@211bdf40]

Related questions are Java-specific.

Emotion answered 30/6, 2016 at 10:25 Comment(0)
C
17

Just slurp it:

(slurp (:body response))
Coxcomb answered 30/6, 2016 at 10:43 Comment(1)
Thanks. I also had to ensure my API calls returned (resp/response "some body") otherwise the response would not be a stream. I.e. Just returning "ok" was just a string and slurp would try to open it as a file.Emotion
S
2

I tend to use https://github.com/ztellman/byte-streams:

(convert (:body res) String)
Seriema answered 30/6, 2016 at 21:20 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.