iOS有一类单测用来验证对网络返回的NSData类型的数据解析是否正确,此时需要传入NSData类型的对象。
获取数据的方法有两种:
1.单测中发起网络请求,用真实返回的数据进行验证
2.在源码中添加write语句将数据保存到文件中,然后单测里读取data文件
这两种方法的问题都很明显:
第一种增加了单测的时长,单测书写的复杂性也会增加
第二种对源码有侵入性,使用完成后还需要删除临时添加的代码
本文介绍一种通过使用Xcode断点来保存NSData类型数据的方法。
具体方法
1.克隆代码
git clone http://github.com/liyanage/lldb_utilities/ ~/git/lldb_utilities
2.在用户目录下创建.lldbinit
ln -s ~/git/lldb_utilities/lldbinit ~/.lldbinit
3.重启Xcode
4.在需要保存的NSData类型对象的后面添加断点
按照下图编辑断点
dump_nsdata
: 使用LLDB’s Python API自定义的命令
data
: 源码中NSData类型的变量
Automatically continue after evalutating actions
: 勾选后,执行到断点处不会暂停程序的运行。
5.运行程序,程序执行到断点处,NSData数据会保存在NSTemporaryDirectory()/tmp/nsdata-xxxxxxxx.dat
中
注:此方法适用于模拟器,不适用于真机