【问题标题】:Most lightweight webservice framework to mock external Webservice in Scala在 Scala 中模拟外部 Web 服务的最轻量级 Web 服务框架
【发布时间】:2023-04-04 17:11:01
【问题描述】:

我正在尝试测试一个依赖于外部 Web 服务的组件,我通过 Play WS 库访问该组件。该组件接收 web 服务的 url。

我想通过将组件连接到虚假网络服务来对组件进行单元测试。

哪个 scala web 框架更适合这个目的?

【问题讨论】:

    标签: web-services scala scalatra


    【解决方案1】:

    我找不到比scalatra 更简单的东西。尽管主页上的代码非常简单,但您必须做一些额外的工作才能将 scalatra 嵌入到您自己的应用程序/测试中。

    import org.scalatra._
    import org.eclipse.jetty.server.Server
    import org.eclipse.jetty.webapp.WebAppContext
    
    private class Mocker extends ScalatraServlet {
        get("/somepath") {
          <h1>Mocked response</h1>
        }
      }
    
    // ↓ you won't need that part if you start jetty as sbt command
    
    private val jetty = new Server(8080)
    private val context = new WebAppContext()
    context setContextPath "/"
    context setResourceBase "/tmp"
    context addServlet(classOf[Mocker], "/*")
    
    jetty.setHandler(context)
    jetty.start
    

    独立应用is really that simple

    【讨论】:

    • 玩有没有类似的东西?
    • @Edmondo1984 他们都在 Web 中工作 :-) 因为您将使用 WS 库 [据我所知],play 和 scalatra 之间的交互如何并不重要(您甚至可能在测试端使用 sinatra 或 django,你不会在另一端得到差异)。
    • 我完全同意...我只是想避免增加我的应用所依赖的框架...
    • @Edmondo1984 看起来像监护人 build special library 用于此目的
    • @om-nom-nom 你能包括进口吗?