【问题标题】:how to write test case for rest service in scala akka(spray)如何在scala akka(spray)中为rest服务编写测试用例
【发布时间】:2016-04-24 16:38:22
【问题描述】:

如何模拟 HttpRespose?我正在使用 scalla、akka 和 spray 来调用以 json 响应的 rest 服务,我需要为此编写测试用例。建议我可以使用的技术。

【问题讨论】:

    标签: java scala rest akka spray


    【解决方案1】:

    最好的选择是使用 Spray Test Kit http://spray.io/documentation/1.1.2/spray-testkit/ 带有预定义的方法,允许进行一些模拟。

    如果您需要模拟底层库 Mockito 是一个不错的选择,但还有其他类似 Scalamock 的库,您可以尝试一下。

    对于 JSON 检查,我在使用 spray 的 json 库和检查反序列化对象方面有很好的经验。

    【讨论】:

      【解决方案2】:

      Mockito 对我来说仍然是最好的模拟工具(请参阅 http://site.mockito.org/)。它是为 java 编写的,但我发现它与 scala 配合得很好。另一个不错的是 easymock (http://easymock.org/)。

      您还应该评估是否需要降低到模拟 HttpResponse 的水平,或者是否可以让您的测试在更高级别上运行。

      【讨论】:

        【解决方案3】:

        我试着回答标题:

        如何在 scala akka(spray) 中为 rest 服务编写测试用例

        问题的详细描述好像有漏点...

        值得一提的是,我们通常编写不同级别的测试,我建议如下:

        • 对于单元测试(没有特定于actor)的模拟,有许多选项与我们在java 中的常见嫌疑人没有什么不同(MockitoEasyMockJMock)+ 一些特定于scala(如ScalaMock)。 Scalatest 为其中一些提供了糖包装,所以我会推荐它。
        • 在集成测试级别我会提到akka-testkit,这是通过交换消息来验证参与者行为的最佳选择。此外,如上一个答案中提到的,还有spray-testkit,它使路由逻辑的测试变得容易。
        • 对于服务/组件级别的测试(发送 http 请求并验证 http 响应),您可以使用任何常用的测试库,例如 Scalatest,或者使用更复杂的库来编写面向业务的测试,例如 cucumber。还有一些模拟/存根依赖项的选项,例如:mock-serverwiremockstubby4j 实际上可以在任何语言中使用,但问题提到了 scala,因此 jvm 运行选项应该是更可取的。根据我的经验,mock-server 是这里最灵活的选择。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-06-19
          • 2015-09-18
          • 1970-01-01
          • 2019-08-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-04
          相关资源
          最近更新 更多