如何在scala akka(喷雾)中编写休息服务的测试用例

时间:2016-01-19 09:21:25

标签: java scala rest akka spray

如何模拟HttpRespose?我正在使用scalla,akka with spray来调用休息服务,用json回复,我需要为此编写测试用例。向我建议可以使用的技术。

3 个答案:

答案 0 :(得分:3)

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

如果你需要模拟一个底层库 Mockito 是一个非常棒的选择,但还有其他像 Scalamock 你可以尝试一下。

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

答案 1 :(得分:0)

Mockito对我来说仍然是最好的模拟实用程序(参见http://site.mockito.org/)。它是为java编写的,但是我发现它与scala一起工作得非常好。另一个好的方法是easymock(http://easymock.org/)。

你还应该评估你是否需要像嘲笑HttpResponse那样低,或者你是否可以让你的测试在更高的水平上运行。

答案 2 :(得分:0)

我试着回答标题:

  

如何在scala akka(喷雾)中编写休息服务的测试用例

在问题的详细描述中似乎缺少点......

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

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