Grails - 如何对使用简单HTTP实用程序功能的服务进行单元测试?

时间:2013-12-18 07:12:25

标签: unit-testing grails

我编写了一个简单的HTTP实用程序类,它接受HTTP方法名称和请求URL,然后返回响应。

在我的Grails应用程序中,有几个服务将使用此实用程序来获取某些Web API调用的结果。但是,我不知道如何对这些服务进行单元测试。该实用程序非常简单,只使用HttpURLConnection执行HTTP请求,没有任何其他依赖项。

我应该如何对这些服务进行单元测试?我应该将该实用程序作为服务的属性,以便可以在它们上注入和模拟此实用程序吗?

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您可以创建一个MockHttpUtility,然后将其用于测试环境。

您可以修改resources.groovy,以便对于测试,mockService将注入您的服务/控制器而不是实际服务。

switch(GrailsUtil.environment) {
  case "test":
        httpUtil(MockHttpUtil) {bean ->
            bean.autowire = "byName"
        }
  }

这适用于集成测试。

对于单元测试,您可以将模拟服务定义如下

void testFoo() {
  defineBeans {
    httpUtil(MockHttpUtil)
 }
}

您可以设计模拟http util,以便在调用时返回预期的响应。例如,你可以有一个构造函数或一个将获得预期响应的setter,当使用http方法和url调用实用程序方法时,它将返回给定的响应。

相关问题