【发布时间】:2012-11-05 13:32:08
【问题描述】:
我有一个基于 spark-framework 的 REST 服务。看起来像这样(简化):
public void init() {
get(new Route("spark/favorites") {
@Override
public Object handle(Request request, Response response) {
ExternalService exS= new ExternalService();
ArrayList<String> favs= exS.getFavorites();
Gson gson = getGson();
return gson.toJson(favs);
}
});
}
现在我想为我的服务编写一些测试,看看我的 get/post/put/delete 是否符合我的要求。 因此,我在测试期间将其部署在嵌入式 Jetty 上。
我现在面临的问题是我的服务依赖于外部 REST 服务。我想模拟对这些的所有调用(进行快速单元测试)。但我不知道如何在运行的服务中模拟。
这可能吗?我应该切换到另一个 REST 框架吗? 有什么建议吗?
【问题讨论】:
-
请添加您用于访问第三方 REST 服务的生产代码。只有这样我们才能提出模拟这些的方法。
-
我想模拟 ExternalService 类这样的类。
-
如果您依赖 Jetty 启动,这不是单元测试。这是一个集成测试。
-
对我来说,集成测试包括与其他组件的交互,这是我不希望模拟的。如果您知道一种在没有码头的情况下测试火花课程的方法,我对此感到满意吗?我宁愿在没有码头的情况下这样做。但到目前为止,这是我知道的访问 spark 提供的 REST 路由的唯一方法。
-
我不认为你应该切换到另一个框架只是因为它更容易进行单元测试......
标签: java unit-testing rest jetty