0

这是我在 akka-http 中的端点:

private val route = Route.asyncHandler(
    pathPrefix("v0") {
       headerValueByType[JWTTokenObject](()) { jwtHeader => 
         mapRequest(authorize(jwtHeader.value)) {
           authenticateOrRejectWithChallenge(authenticate(transactionId, _)) { claims =>
               pathPrefix("v1"/Segment) { someValue => 
                  path("v3") {
                    post {
                        handleThisPostRequest(someValue)
                    }
                   }
                }
            }
         }
      }
)

这是使用作为标头值传递的 JWT 'Bearer' 令牌进行身份验证的 POST API 之一。我想测试这个端到端。它还调用数据库和第三方服务。

我正在尝试添加任何 API 测试框架,以便能够在任何环境中进行测试。您能否建议任何框架来实现这种类型的集成测试,其中环境变量涉及调用第三方 API。

是否可以使用 spray-testkit(Test API REST SCALA)对此进行测试?一个例子会很有帮助。谢谢

4

1 回答 1

1

好吧,Akka 测试套件(https://doc.akka.io/docs/akka-http/current/routing-dsl/testkit.html)有一个很棒的套件来进行路由 Actor 测试。我建议使用它。

看看如何处理授权令牌:https ://github.com/akka/akka-http/blob/main/akka-http-tests/src/test/scala/akka/http/scaladsl/server/directives /SecurityDirectivesSpec.scala

关于环境变量:如果您需要在测试中调用远程服务,因为是集成或 E2E 测试,请使用 Scala config 的功能: https ://github.com/lightbend/config #optional-system-or-env-variable-overrides

在这类项目中有很多关于如何处理测试的策略,但是,如果好的 Akka 有很好的资源可以阅读它。

于 2022-01-13T17:37:22.887 回答