-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
React单元测试最佳实践与前端TDD #230
Comments
地址 404 了诶 |
😘 |
最新内容上线了朋友们 @JimmyLv @WanQuanXie 快来围观!哈哈哈,都4202年了,还有人在写React吗 |
@EthanLin-TWer 谢谢分享,干货很多!本文提倡从最上层的 React 组件入手,除了 mock 三方依赖之外,通过贯穿整个应用的单元测试策略来进行测试。有时候某些 ui-components, Domain Logic 足够复杂,我想本文测试策略是不是还不够覆盖到每个细节🤔(所以在你的示例代码中有对 ui-components 层的额外单元测试 ),我有个疑问,我们应该如何平衡「贯穿整个应用」和「额外为某一层增加测试」之间的关系,让我们整个系统的单元测试是充分的而又不是重叠的?我们应该对哪些层额外添加测试,哪些层放在 routes 层一并测试? 另外,在对 ui-components 层的单元测试中,有调用放在 routes 层级下的 tester |
@dukeluo 先回复个简单的。点个赞,代码看得真细!是的,这里我有点偷懒了,其实我在想整个 只能在代码demo里改了,博客代码和截图重新弄effort太高了哈哈哈🚬 |
@dukeluo 把“额外为某一层增加测试”这个问题拆解来看,我想最主要的是关于React Hooks的:什么时候使用这种page tests直接测,什么时候把一些逻辑放到React Hooks里头做单测?这也是我下一篇React Hooks最佳实践与面向对象目前还卡住的地方。 为什么单提React Hooks呢?因为其他的层级似乎已经有相对成熟的答案了:
所以说我现在直觉本质问题还是有些业务逻辑是写单独的React Hooks单测还是一样通过page tests覆盖,是吧?这其实是个性价比问题。我现在还没有成熟的想法或指导原则,再想想。不过目前做法就是page tests能测的话就它测问题不大,React hooks想增加单测也可以,只要够稳定,否则还要平衡改动成本。测试之间有一些重叠也可以接受,因为page tests更像发现问题的测试,而React hooks是定位问题的测试,目的不同,可以共存。 |
@EthanLin-TWer 是的, React Hooks 以及一些 Domain Object,期待你的下一篇 :) |
非常好的文章,感谢分享 👍 文中观点我都非常认同,而且你通过示例代码来说明的过程也很清晰,学习到了。 提一个小的建议哈。那个
正如你文中提到的,测试要表达力强。我认为测试中体现准备数据(这里就是 api 返回的hotel数据)和验证数据之间的关系是非常重要的。原来的测试给人一种感觉,就是我知道要验证什么结果,但是我看不出来”为什么“是这样的结果。 最后,我尤其认同文中提到构筑测试代码 DSL的做法。我的伙伴 @leeonky 给端到端测试开发了一些用于准备数据和验证数据的DSL 的开源库。如果你有兴趣看看给点反馈的话,非常欢迎哈。链接这里就不贴了,不然太喧宾夺主,可以私聊 😄 |
正如你所说,测试中体现准备数据和验证数据之间的关系是非常重要的。在第一个测试中我没有把完整的测试数据摆出来,不是非常刻意的选择,不过潜意识里我是觉得全部数据放上来,测试数据的准备部分就变长了,可能会触发linter工具的自动换行,从而让测试的given部分变得冗长、失去重点。所以trade off的方法是,我给这个测试数据起了个名
👍这里就是个大家交流的地方,不用客气可以直接贴链接嘛,哈哈。 最后感谢阅读以及花时间给我写一些反馈! @JosephYao |
多谢你的回复哈。我们有两个核心的开源库,一个涉及到数据准备 https://github.com/leeonky/jfactory , 另一个则是用来做验证的 https://github.com/leeonky/DAL-java。目的就是让given和then的能够通过dsl写的更加简单,突出重点,忽略测试中那些不必要的细节。而这些对单元测试和端到端测试都是适用的。 不过,这两个库都是java写的,暂时没有其他语言的版本,对于前端js开发来说,只能算是个参考了 😄 。围绕这两个核心库还有一些周边的辅助库,比较多,先就不列举了。 期待你的反馈哈,也同样期待你后续的文章 👍 |
本Github issue主要是为了方便留言。最新文章内容请移步我的博客(需要能够同时访问Github和jsDelivr,不便之处抱歉了…)
https://ethan.thoughtworkers.me/#/post/2023-12-10-react-unit-testing-best-practices-v2
The text was updated successfully, but these errors were encountered: