首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

【spock】单测竟然可以如此丝滑

在之前的关于swagger文章里提到过,程序员最讨厌的两件事,一件是别人不写文档,另一件就是自己写文档。这里如果把文档换成单元测试也同样成立。每个开发人员都明白单元测试的作用,也都知道代码覆盖率越高越好。高覆盖率的代码,相对来说出现 BUG 的概率就越低,在线上运行就越稳定,接的锅也就越少,就也不会害怕测试同事突然的关心。既然这么多好处,为什么还会讨厌他呢?至少在我看来,单测有如下几点让我喜欢不起来的理由。第一,要额外写很多很多的代码,一个高覆盖率的单测代码,往往比你要测试的,真正开发的业务代码要多,甚至是业务代码的好几倍。这让人觉得难以接受,你想想开发 5 分钟,单测 2 小时是什么样的心情。而且并不是单测写完就没事了,后面业务要是变更了,你所写的单测代码也要同步维护。第二,即使你有那个耐心去写单测,但是在当前这个拼速度挤时间的大环境下,会给你那么多写单测的时间吗?写一个单测的时间可以实现一个需求,你会如何去选?第三,写单测通常是一件很无趣的事,因为他比较死,主要目的就是为了验证,相比之下他更像是个体力活,没有真正写业务代码那种创造的成就感。写出来,验证不出bug很失落,白写了,验证出bug又感到自己是在打自己脸。

03

用 Swift 编写网络层单元测试

单元测试主要用来检测某个工作单元的结果是否符合预期,以此保证该工作单元的逻辑正确。上次写封装一个 Swift-Style 的网络模块的时候在结尾提了一下单元测试的重要性,评论中有朋友对网络层的单元测试有一些疑惑。我推荐他去看《单元测试的艺术》(这本书让我对单元测试有了新的认识),但由于该书是以 C# 为例写的,可能会对 iOS 开发的朋友造成一定的阅读障碍,所以我还是决定填一下坑,简单介绍一下用 Swift 进行网络层单元测试的方法。不过由于 Swift 的函数式特性,像《单元测试的艺术》中那样单纯地用 OOP 思维编写测试可能会有些麻烦,本文临近结尾部分写了一点自己用过的使用“伪装函数”进行测试的方法,可能大家以前没见过,我自己也是突然想到的,欢迎提出各种意见。

02
领券