44|RESTful Web Services(8):如何在现有代码的基础上构造测试?
徐昊
你好,我是徐昊。今天我们继续使用 TDD 的方式实现 RESTful Web Services。
回顾架构愿景与任务列表
目前我们的架构愿景如下:
任务列表为:
ResourceServlet
将请求派分给对应的资源(Resource),并根据返回的状态、超媒体类型、内容,响应 Http 请求
使用 OutboundResponse 的 status 作为 Http Response 的状态
使用 OutboundResponse 的 headers 作为 Http Response 的 Http Headers
通过 MessageBodyWriter 将 OutboundResponse 的 GenericEntity 写回为 Body
如果找不到对应的 MessageBodyWriter,则返回 500 族错误
如果找不到对应的 HeaderDelegate,则返回 500 族错误
如果找不到对应的 ExceptionMapper,则返回 500 族错误
如果 entity 为空,则忽略 body
当资源方法抛出异常时,根据异常响应 Http 请求
如果抛出 WebApplicationException,且 response 不为 null,则使用 response 响应 Http
如果抛出的不是 WebApplicationException,则通过异常的具体类型查找 ExceptionMapper,生产 response 响应 Http 请求
当其他组件抛出异常时,根据异常响应 Http 请求
调用 ExceptionMapper 时
调用 HeaderDelegate 时
调用 MessageBodyWriter 时
通过 Providers 查找 ExceptionMapper 时
通过 Providers 查找 MessageBodyWriter 时
通过 RuntimeDelegate 查找 HeaderDelegate 时
RuntimeDelegate
为 MediaType 提供 HeaderDelegate
为 CacheControl 提供 HeaderDelegate
为 Cookie 提供 HeaderDelegates
为 EntityTag 提供 HeaderDelegate
为 Link 提供 HeaderDelegate
为 NewCookie 提供 HeaderDelegate
为 Date 提供 HeaderDelegate
提供 OutboundResponseBuilder
OutboundResponseBuilder
OutboundResponse
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了如何在现有代码的基础上构造测试,作者通过使用TDD的方式实现RESTful Web Services。文章首先回顾了架构愿景与任务列表,列举了任务列表中需要完成的功能。接着展示了ResourceServlet的代码实现,包括如何将请求派发给对应的资源、处理异常、以及如何响应Http请求等。作者还提出了两个思考题,分别是对测试代码进行重构和分享相关知识书单和项目代码。 文章的亮点在于通过具体的代码实现和任务列表,帮助读者了解了RESTful Web Services的实现细节,尤其是在处理异常和响应Http请求方面。读者可以通过作者提出的思考题,进一步加深对文章内容的理解,并在实践中提升学习效果。整体而言,本文适合对RESTful Web Services感兴趣的技术人员阅读,能够帮助他们更好地理解和实践相关知识。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《徐昊 · TDD 项目实战 70 讲》,新⼈⾸单¥98
《徐昊 · TDD 项目实战 70 讲》,新⼈⾸单¥98
立即购买
登录 后留言
全部留言(3)
- 最新
- 精选
- aoe@TestFactory + 标签 + 反射刷新了我对自动化测试认知!
编辑回复: 哈哈哈徐老师很多操作都刷新了我的认知!
2022-07-021 - Luke踩了个坑。如果测试时遇到 StackOverflowError 的,看看 stub 的 OutboundResponse 是否都是默认值。2022-08-26归属地:北京1
- 枫中的刀剑看老师重构代码是真的舒服,信手拈来,一气呵成。 动态测试配合函数式还能这么用,学到了。2022-06-29
收起评论