gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 15:30:20 24 4
gpt4 key购买 nike

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

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

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

有什么建议么?

最佳答案

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

您可以修改 resources.groovy 以便在测试时将 mockService 注入(inject)到您的服务/ Controller 中,而不是真正的服务中。

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

这适用于集成测试。

对于单元测试,您可以如下定义模拟服务
void testFoo() {
defineBeans {
httpUtil(MockHttpUtil)
}
}

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

关于unit-testing - Grails - 如何对使用简单 HTTP 实用功能的服务进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20651776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com