【发布时间】:2012-09-21 16:21:53
【问题描述】:
这个问题与this question密切相关。不同之处在于我想遵循模拟客户端的推荐方法。所以,我定义了以下 HTTPBuilder:
protected readUrl() {
def http = new HTTPBuilder("http://example.com")
def status = http.request(Method.GET, ContentType.JSON) {req ->
response.success = {resp, json ->
result = json.toString()
new Success<String>(result)
}
response.'401' = {resp ->
final String errMsg = "Not Authorized"
new Failed(Failable.Fail.ACCESS_DENIED, errMsg)
}
response.failure = {resp ->
final String errMsg = "General failure ${resp.statusLine}"
new Failed(Failable.Fail.UNKNOWN, errMsg)
}
}
}
我想做的是找到一种方法来对该代码块进行单元测试。我想模拟响应,所以如果可能的话,我可以专门设置响应代码。有人可以告诉我一种方法吗?
【问题讨论】:
-
我实际上已经通过模拟 HTTPBuilder 进行了编码,但我仍然想看看模拟客户端是什么样子的。
-
嘲笑“客户”是什么意思?
-
类似这样的:groovyconsole.appspot.com/script/760001 只需将此模拟设置为您的服务。
-
@Michael 我不确定“客户”应该是什么。有人提到,在我所链接的问题中,嘲笑“客户”是一种更好的方法,但是,我也不知道发帖者的意思。
-
@Raphael 谢谢。我以不同的方式模拟了我的解决方案,但您的代码示例看起来比我的解决方案简单得多。我遇到的最大问题是能够测试不同响应代码的路径。您的示例似乎已经解决了这个问题。
标签: unit-testing grails groovy httpbuilder