如何为私有函数编写测试?

  • 本文关键字:测试 函数 scala
  • 更新时间 :
  • 英文 :


这是我的私有函数,它将返回三种类型,成功,错误或错误,我想测试这个私有函数。

class GrpcAuthClientInterceptor{
private def getToken(clientAuth: ClientAuthentication, format: String, provider: String, scopes: String): TokenCommandResult = {
val request = makeTokenRequest(provider, format, scopes, this.audience.asInstanceOf[String], clientAuth)
val result = new TokenCommand(request).execute()
result match {
case success: TokenCommandResult.Success => printAndSaveToken(format, success.getResponse.getOIDCTokens.getAccessToken.getValue)
case error: TokenCommandResult.Error => printError(format, error.getError.getErrorObject.getDescription)
case fault: TokenCommandResult.Fault => printError(format, fault.getException.getMessage)
}
result
}
}

这就是我测试它的方式,我试图使用反射来做到这一点,但我得到了错误,我该如何修复?

java.lang.NoSuchMethodException: Interceptor.GrpcAuthClientInterceptorTest$$anon$1.getToken(com.nimbusds.oauth2.sdk.auth.ClientAuthentication, java.lang.String, java.lang.String, java.lang.String)
class GrpcAuthClientInterceptorTest {
private var serverInterceptor = null
private val grpcAuthClientInterceptor = new GrpcAuthClientInterceptor {
override var audience: Nothing = _
}
private var clientId = ""
private var provider = ""
private var clientSecret = "
private var scope = null
private var baseUrl = null
private var format = "jwt-application"

test("test") {
val getToken = this.grpcAuthClientInterceptor.getClass.getDeclaredMethod("getToken", classOf[ClientAuthentication], classOf[String], classOf[String], classOf[String]) //got error at this line
val clientSecretBasic = new ClientSecretBasic(new ClientID(clientId), new Secret(clientSecret))
val token = getToken.invoke(grpcAuthClientInterceptor, clientSecretBasic, format, provider, null)
assertTrue(token.isInstanceOf[TokenCommandResult.Success])
}
}
val theFunction = PrivateMethod[TokenCommandResult]('getToken)
val result = grpcAuthClientInterceptor invokePrivate theFunction()

当您在问题的最后一行调用theFunction()时,您需要向其传递必要的参数。它看起来像这样:

val result = grpcAuthClientInterceptor invokePrivate theFunction(clientSecretBasic, format, provider, scopes)

最新更新