Skip to content

Instantly share code, notes, and snippets.

@eicnix
Created July 14, 2015 07:54
Show Gist options
  • Save eicnix/a4b9ed0258bdfac307a5 to your computer and use it in GitHub Desktop.
Save eicnix/a4b9ed0258bdfac307a5 to your computer and use it in GitHub Desktop.
Mocking complete Response using Scalamock and dispatch
// Example for lukaseichler.de/how-to-test-dispatch-request/
import java.io.InputStream
import java.net.URI
import java.nio.ByteBuffer
import java.util
import com.ning.http.client.cookie.Cookie
import com.ning.http.client.{ FluentCaseInsensitiveStringsMap, Response }
import scala.collection.immutable.HashMap
class MockResponse(val body: String, val status: Int = 200, val header: Map[String, String] = new HashMap[String, String]) extends Response {
override def getResponseBodyExcerpt(maxLength: Int, charset: String): String = ???
override def getResponseBodyExcerpt(maxLength: Int): String = ???
override def getResponseBodyAsByteBuffer: ByteBuffer = ???
override def getStatusCode: Int = status
override def getResponseBodyAsBytes: Array[Byte] = ???
override def getResponseBodyAsStream: InputStream = ???
override def isRedirected: Boolean = ???
override def getCookies: util.List[Cookie] = ???
override def hasResponseBody: Boolean = body != null
override def getStatusText: String = ???
override def getHeaders(name: String): util.List[String] = ???
override def getHeaders: FluentCaseInsensitiveStringsMap = ???
override def hasResponseHeaders: Boolean = ???
override def getResponseBody(charset: String): String = ???
override def getResponseBody: String = body
override def getContentType: String = "UTF-8"
override def hasResponseStatus: Boolean = true
override def getUri: URI = ???
override def getHeader(name: String): String = header(name)
}
// Example for lukaseichler.de/how-to-test-dispatch-request/
import dispatch.{HttpExecutor, _}
import dispatch.Defaults._
val httpMock = mock[HttpExecutor]
(httpMock.apply(_: (Request, AsyncHandler[Response]))(_: ExecutionContext))
.expects(*, *)
.returning(Future[Response] {
new MockResponse("Hello World")
})
class Foo(http: HttpExecutor = Http) // Allow to override default HttpExecutor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment