Searching...
viernes, 16 de junio de 2023

Pruebas unitarias de llamada a APIs en ScalaTest

 import org.scalatest.flatspec.AnyFlatSpec

import org.scalatest.matchers.should.Matchers

import requests.Response

import scala.collection.mutable


object DatahubGraphqlProcessor {

  def sendRequest(url: String): Response = {

    // Realizar la petición a la API y obtener la respuesta

    // ...

    // Simulamos una respuesta ficticia para el ejemplo

    val mockResponseCode: Int = 200

    val mockResponseText: String = """{"message": "Mock response"}"""

    Response(

      statusCode = mockResponseCode,

      headers = Map.empty,

      body = mockResponseText

    )

  }


  def parseResponse(responseText: String): mutable.Map[String, List[String]] = {

    // Parsear el texto JSON y construir el mapa mutable

    // ...

    // Simulamos un resultado ficticio para el ejemplo

    val parsedResult: mutable.Map[String, List[String]] = mutable.Map(

      "key1" -> List("value1", "value2"),

      "key2" -> List("value3", "value4")

    )

    parsedResult

  }

}


class DatahubGraphqlProcessorSpec extends AnyFlatSpec with Matchers {


  val mockResponseCode: Int = 200

  val mockResponseText: String = """{"message": "Mock response"}"""


  "DatahubGraphqlProcessor" should "simular la llamada a la API REST y parsear la respuesta" in {

    // Mockear la llamada a la API

    val mockDatahubGraphqlProcessor = new DatahubGraphqlProcessor {

      override def sendRequest(url: String): Response = {

        // Simular la respuesta de la API

        Response(

          statusCode = mockResponseCode,

          headers = Map.empty,

          body = mockResponseText

        )

      }

    }


    // Realizar la llamada y verificar la respuesta

    val response: Response = mockDatahubGraphqlProcessor.sendRequest("https://api.example.com/graphql")

    response.statusCode shouldEqual mockResponseCode

    response.text() shouldEqual mockResponseText


    // Parsear la respuesta

    val parsedResult: mutable.Map[String, List[String]] = mockDatahubGraphqlProcessor.parseResponse(response.text())

    

    // Verificar el resultado del parsing

    parsedResult("key1") shouldEqual List("value1", "value2")

    parsedResult("key2") shouldEqual List("value3", "value4")

  }

}


0 comentarios:

Publicar un comentario

Gracias por participar en esta página.

 
Back to top!