徐昊 · TDD 项目实战 70 讲
徐昊
Thoughtworks 中国区 CTO
18159 人已学习
新⼈⾸单¥98
登录后,你可以任选4讲全文学习
课程目录
已完结/共 88 讲
实战项目二|RESTful开发框架:依赖注入容器 (24讲)
实战项目三|RESTful Web Services (44讲)
徐昊 · TDD 项目实战 70 讲
15
15
1.0x
00:00/00:00
登录|注册

45|RESTful Web Services(9):通过伦敦学派得到的测试风格是什么样的?

你好,我是徐昊。今天我们继续使用 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,并探讨了伦敦学派的测试风格。作者分享了实践经验,重点讨论了在实现RESTful Web Services时应用TDD和伦敦学派的测试风格。文章通过具体的实现方法和技术细节,向读者展示了如何利用TDD和伦敦学派的测试风格来开发高质量的RESTful Web Services。此外,文章还提出了两个思考题,引导读者深入思考伦敦学派与经典学派的差异以及对编码过程的影响。适合对RESTful Web Services开发感兴趣的技术人员阅读。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《徐昊 · TDD 项目实战 70 讲》
新⼈⾸单¥98
立即购买
登录 后留言

全部留言(2)

  • 最新
  • 精选
  • 枫中的刀剑
    exceptionMapper_toResponse的异常抛出这样写会不会好一些。 when(providers.getExceptionMapper(eq(RuntimeException.class))).thenReturn(ex -> { throw exception; }); 强调是在toResponse 里抛出的。 不然感觉和providers_getExceptionMapper没区别。

    作者回复: 可以

    2022-06-30
  • 忘川
    伦敦学派 适用场景: 自己不太熟悉的框架或者大型结构 使用方法: 使用约定和api的配合,来验证组件的功能,同时增加自己对于框架的理解.用来吸收和消化框架 大的方向: 自上而下 从抽象到具体 经典学派: 适用场景: 大的思路和方向已有把握 使用方法: 不需要去生硬的模仿,就可以从0-1不断整理,不断演进的方式 大的方向: 自下而上 从具体到抽象 使用抽象 让经验升华 给我带来的思考: 学习或者制造一个自己不熟悉的东西的时候 模仿是最快的 可以避免走弯路 当我们已经有大的把握的时候 自下而上 会更快捷 可以避免模拟的成本
    2023-01-06归属地:上海
收起评论
显示
设置
留言
2
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部