单元测试 – Groovy HTTPBuilder模拟响应
发布时间:2020-12-14 16:33:03 所属栏目:大数据 来源:网络整理
导读:我想弄清楚如何为我要编写的服务编写我的测试用例. 该服务将使用HTTPBuilder从某个URL请求响应. HTTPBuilder请求只需要检查响应是否成功.服务实现将是如此简单: boolean isOk() { httpBuilder.request(GET) { response.success = { return true } response.
我想弄清楚如何为我要编写的服务编写我的测试用例.
该服务将使用HTTPBuilder从某个URL请求响应. HTTPBuilder请求只需要检查响应是否成功.服务实现将是如此简单: boolean isOk() { httpBuilder.request(GET) { response.success = { return true } response.failure = { return false } } } 所以,我希望能够模拟HTTPBuilder,以便我可以在我的测试中将响应设置为成功/失败,这样我就可以断言我的服务的isOk方法在响应成功时返回True而在响应时返回False是失败的. 任何人都可以帮助我如何模拟HTTPBuilder请求并在GroovyTestCase中设置响应? 解决方法
这是一个处理测试用例的模拟HttpBuilder的最小示例:
class MockHttpBuilder { def result def requestDelegate = [response: [:]] def request(Method method,Closure body) { body.delegate = requestDelegate body.call() if (result) requestDelegate.response.success() else requestDelegate.response.failure() } } 如果结果字段为true,它将调用成功闭包,否则失败. 编辑:这是使用MockFor而不是模拟类的示例: import groovy.mock.interceptor.MockFor def requestDelegate = [response: [:]] def mock = new MockFor(HttpBuilder) mock.demand.request { Method method,Closure body -> body.delegate = requestDelegate body.call() requestDelegate.response.success() // or failure depending on what's being tested } mock.use { assert isOk() == true } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |