这个周末整体来说还是不错,休息得较好。而自己也没有耽误什么时间,基本都在研究代码。
值得写一写的是这个周末对于测试的理解又感觉上了一个层次。公司的sdk我一直在写代码的同时写好了测试,效果也算是不错的。不过一直有些迷惑的是,对于这样一个网络模块,我需要创建模拟服务器来测试联网功能。但是,这个模拟服务器我并没找到合适的网络测试库来提供功能,所以就变成了一种我需要用自己写的网络服务来测试自己的网络服务。我觉得这样有点不对。而且,前期我的测试基本上集中在SDK的接口方法上,通过调用创建本地服务器来测试接口是否工作正确。但是,我觉得这已经有点超过单元测试的范围,变成类似于集成测试?-其实我也不肯定是不是这样。但这二者确实也是有点模糊了。 – 所以,我一直在考虑,其实我应该把测试做到更进一步的细粒度。这就涉及到我如何去测试我所写的更基本的模块功能。而这些模块,其实是对于官方框架功能的一个定制 包装,如果进行测试,感觉就需要涉及到联网测试。而这并不是可靠的。但是,将问题转换到这个范围后,我再去搜索时候,就发现了答案:如何进行网络功能测试?方法就是将网络功能模块替换成一个无需网络访问的mock。而这个替换,可以通过协议来进行抽象实现具体类型的更换,这其实就是依赖倒置原则(查了资料才记起来这个词)。而在Swift里面可以通过面向协议编程来实现。我在网络上找到了类似方法的教程,然后我按照这个教程自己实现了一下,把模块里面的Apple组件替换成了自己写的mock,这样就可以实现对自己写的这个组件功能进行测试,而不需要联网。同样,如果这个组件功能测试通过了,那就可以放心用这个组件功能去构建模拟的本地服务器去测试整个模块的接口了。这样也解决了我开始对于自身功能来测试自身的迷惑了。
周末的学习,还是比较有效果。虽然其实以前也看到过关于替换这一方法在单元测试中的应用,但是这次才是真正用上。也算是进一步掌握了吧。