diff --git a/rest/test/recorder.go b/rest/test/recorder.go
new file mode 100644
index 0000000..bb4286e
--- /dev/null
+++ b/rest/test/recorder.go
@@ -0,0 +1,29 @@
+package test
+
+import (
+	"encoding/json"
+	"net/http/httptest"
+)
+
+type ResponseRecorder struct {
+	*httptest.ResponseRecorder
+}
+
+func (r *ResponseRecorder) WriteJson(v interface{}) error {
+	b, err := json.Marshal(v)
+	if err != nil {
+		return err
+	}
+	_, err = r.Write(b)
+	return err
+}
+
+func (r *ResponseRecorder) EncodeJson(v interface{}) ([]byte, error) {
+	return json.Marshal(v)
+}
+
+func NewRecorder() *ResponseRecorder {
+	return &ResponseRecorder{
+		ResponseRecorder: httptest.NewRecorder(),
+	}
+}