在Scala中模拟HTTP请求(POST请求)(使用请求-Scala)

dpiehjr4  于 2022-11-09  发布在  Scala
关注(0)|答案(1)|浏览(455)

我正在使用RequestsScala模块发出HTTP请求,如下所示:

object AEMUtility {
    ....
    def getJWTToken() {
    ....
    val response = requests.post(
      s"$imsExp/ims/exchange/jwt/",
      headers = Map(
        "Content-Type" -> "application/x-www-form-urlencoded"
      ),
      params = Map(
        "client_id" -> clientId,
        "client_secret" -> clientSecret,
        "jwt_token" -> token
      )
    )
    }
}

我想通过以下方式模拟POST请求函数来编写单元测试:检查Mock函数中传递的参数并返回伪响应。
有没有办法在Scala中模拟安装的依赖关系?
我试过:

"authorize" should "return JWT token if request is valid" in {
    val postMock = mock[requests.post]

  }

但这给了我错误:Cannot resolve symbol post

avwztpqn

avwztpqn1#

您得到的错误是因为requests.post是Requester的一个示例(参见源代码),mock需要一个类型参数。您不能将对象传递给它,您可以模拟它的类、特征等。因此,您可能应该尝试模拟Case类:

val requester = mock[requests.Requester]

或者BaseSession性状,包含了postget等方法。

val session = mock[requests.BaseSession]

或者Session Case类,它是BaseSession特征的实现。

val session = mock[requests.Session]

不管怎样,我不确定,图书馆对我来说并不适合考试。

相关问题