Joseph Yao

Results 8 comments of Joseph Yao

给一些我的反馈哈。总体来说,我觉得文章写的很好,很落地,对 react 和 redux 前端开发做 UT 给出了非常详细的指导和建议,让我学到很多。我最近做 RN 的开发,写的前端代码还不多,需要根据本文中的建议去实践一下。 我下面的反馈会按照文中的章节来给(每个反馈一个 commit 吧),不对的地方,欢迎交流。:)

单元测试的上下文,测试策略和好测试的特征这几节绝大部分的内容,我很认同,我也是 TDD 的粉丝哈。 测试策略里面提到“有的测试编写维护成本高,运行时间长、速度慢(如端到端测试、集成测试、UI 测试等)”,这是个常见的认知。我会认为端到端测试(或者叫验收测试)维护成本可以和 UT 基本保持一致的,关键是看对测试的重构和设计是否做的好。我写了一篇相关的文章说这个,这个不展开了哈。https://www.odd-e.cn/rest-in-peace-integration-test/ 好测试的特征里面,我感觉少了一条重要的,我后面反馈再提哈,其实你好像也提到了,只是这里漏了。:)

reducer 的测试部分,我很认同。reducer应该被测试,但是没必要通过创建store来测试,直接纯函数测试就好了。不过,我对单元测试的“表达力”要求比较高,所以我会建议重构一下那个merge的UT。大致如下: ``` import reducers from './reducers' import actions from './actions' test('should merge user comments within the same day and remove duplications when action saveUserComments is dispatched with new fetched...

先赞一下你的行动力哈。之前那个关于验收测试的链接给错了。。。我已经在那个commit改好了,欢迎交流。 继续我对文章的反馈哈。 - 对于 action,我认同你的说法,就是 UT 基本是没必要的,因为 action 的代码太直接了 - 对于 selector,我也认同要和 reducer 一样做 UT 的观点。更重要的是,我通过本文知道了有 selector 这样的好东东,对于 mapToProps 的代码实现和UT的确是非常好的solution,学习了,之后一定要实践一下 - 对于 saga,我非常认同通过 runSaga 的方式来 UT 的做法,这样不会陷入测 Saga 代码实现细节的麻烦。saga 之前有过了解,但还没实践过,看了你的代码和测试之后,感觉也是必须尝试的好东东啊...

对于 react component 的 UT,我个人感觉是本文中写的最深入的部分了。我之前对于 component 的 UT 有不少困惑的地方,看完基本都有思路了,后面一定会找机会来实践的。 就是有个小问题想讨论一下。文中有个叫 ProductDetailPage 的 component,代码如下: ``` const ProductDetailPage = ({ name, introduction, details, comments }) => ( {comments.length > 0 && }...

很感谢你的回复哈。上面的那个小 tips,学习了。 难得有文章可以让我这么投入的回复,以后多交流哈。🙂

非常好的文章,感谢分享 👍 文中观点我都非常认同,而且你通过示例代码来说明的过程也很清晰,学习到了。 我自己也写前端,没你那么专业,只是想做到全栈开发而已。我用的是VueJS 2,因为项目中会写UI端到端测试的缘故,所以前端的ut最近写的不多,只有遇到复杂的ui交互逻辑才会写。当然写的时候,和你推荐的方法一样,从页面组件入手,只会mock掉api,同样也能做到tdd的效果。 提一个小的建议哈。那个 `hotels list` 下面 `should call search endpoint with correct parameters: city id, check dates in yyyy-MM-dd, and no. of occupancies` 的测试,我觉得有个地方可以改进一下。就是把BeforeEach中的 api mock 数据写到测试中去,并且加上具体的属性值,以便和...

多谢你的回复哈。我们有两个核心的开源库,一个涉及到数据准备 https://github.com/leeonky/jfactory , 另一个则是用来做验证的 https://github.com/leeonky/DAL-java。目的就是让given和then的能够通过dsl写的更加简单,突出重点,忽略测试中那些不必要的细节。而这些对单元测试和端到端测试都是适用的。 不过,这两个库都是java写的,暂时没有其他语言的版本,对于前端js开发来说,只能算是个参考了 😄 。围绕这两个核心库还有一些周边的辅助库,比较多,先就不列举了。 期待你的反馈哈,也同样期待你后续的文章 👍