diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/src/main/scala/com/softwaremill/sttp/testing/SttpBackendStub.scala | 6 | ||||
-rw-r--r-- | core/src/test/scala/com/softwaremill/sttp/testing/SttpBackendStubTests.scala | 10 |
2 files changed, 16 insertions, 0 deletions
diff --git a/core/src/main/scala/com/softwaremill/sttp/testing/SttpBackendStub.scala b/core/src/main/scala/com/softwaremill/sttp/testing/SttpBackendStub.scala index d7d1034..d6119a9 100644 --- a/core/src/main/scala/com/softwaremill/sttp/testing/SttpBackendStub.scala +++ b/core/src/main/scala/com/softwaremill/sttp/testing/SttpBackendStub.scala @@ -107,6 +107,12 @@ class SttpBackendStub[R[_], S] private (rm: MonadError[R], } new SttpBackendStub(rm, matchers.orElse(m), fallback) } + def thenRespondWrapped(resp: Request[_, _] => R[Response[_]]): SttpBackendStub[R, S] = { + val m: PartialFunction[Request[_, _], R[Response[_]]] = { + case r if p(r) => resp(r) + } + new SttpBackendStub(rm, matchers.orElse(m), fallback) + } } } diff --git a/core/src/test/scala/com/softwaremill/sttp/testing/SttpBackendStubTests.scala b/core/src/test/scala/com/softwaremill/sttp/testing/SttpBackendStubTests.scala index 1299cae..772757e 100644 --- a/core/src/test/scala/com/softwaremill/sttp/testing/SttpBackendStubTests.scala +++ b/core/src/test/scala/com/softwaremill/sttp/testing/SttpBackendStubTests.scala @@ -26,6 +26,8 @@ class SttpBackendStubTests extends FlatSpec with Matchers with ScalaFutures { }) .whenRequestMatches(_.uri.port.exists(_ == 8080)) .thenRespondWrapped(Response(Right("OK from monad"), 200, "OK", Nil, Nil)) + .whenRequestMatches(_.uri.port.exists(_ == 8081)) + .thenRespondWrapped(r => Response(Right(s"OK from request. Request was sent to host: ${r.uri.host}"), 200, "OK", Nil, Nil)) "backend stub" should "use the first rule if it matches" in { implicit val b = testingStub @@ -58,6 +60,14 @@ class SttpBackendStubTests extends FlatSpec with Matchers with ScalaFutures { r.body.right.get should be("OK from monad") } + it should "respond with monad with response created from request" in { + implicit val b = testingStub + val r = sttp.post(uri"http://example.org:8081").send() + r.is200 should be(true) + r.body should be('right) + r.body.right.get should be("OK from request. Request was sent to host: example.org") + } + it should "use the default response if no rule matches" in { implicit val b = testingStub val r = sttp.put(uri"http://example.org/d").send() |