Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在iOS测试中实际使用存根或模拟对象?_Ios_Unit Testing_Mocking_Stubs - Fatal编程技术网

如何在iOS测试中实际使用存根或模拟对象?

如何在iOS测试中实际使用存根或模拟对象?,ios,unit-testing,mocking,stubs,Ios,Unit Testing,Mocking,Stubs,我的问题有两部分 首先,我了解iOS中测试的基本知识,我正在尝试学习如何使用模拟。据我所知,mocking object是在很难访问伪对象(如查询数据库或不可预测的情况)时对伪对象的模拟。您能否解释一个简单的示例,说明如何模拟数据库的行为 在我的情况下,我想测试从Facebook API的API调用中收到的JSON数据包。我想确保这些数据包不是空的,并且存在特定的节点。测试这一点的最佳方法是什么?存根是一个伪存根,它在被调用时提供一个固定的响应。mock是一个假的,它记录了它是如何被调用的。这就

我的问题有两部分

首先,我了解iOS中测试的基本知识,我正在尝试学习如何使用模拟。据我所知,mocking object是在很难访问伪对象(如查询数据库或不可预测的情况)时对伪对象的模拟。您能否解释一个简单的示例,说明如何模拟数据库的行为

在我的情况下,我想测试从Facebook API的API调用中收到的JSON数据包。我想确保这些数据包不是空的,并且存在特定的节点。测试这一点的最佳方法是什么?

存根是一个伪存根,它在被调用时提供一个固定的响应。mock是一个假的,它记录了它是如何被调用的。这就是为什么模拟对象框架(如or)基本上允许您:

  • 造假
  • 存根返回预定响应的方法
  • 验证是否使用某些参数调用了方法
我建议首先不要使用模拟对象框架。相反,通过将NSObject子类化并定义所需的方法子集,手动创建它们。存根将简单地返回固定响应。模拟将记录方法的参数。一旦掌握了诀窍(并且厌倦了编写样板代码),就切换到模拟对象框架。但是通过手工操作你会学到很多东西

接下来,您需要的是一种方法,将stub/mock放入调用它们的位置。这件事就这样结束了。理想情况下,您可以将它们传递到对象的初始值设定项中—测试将传入假代码,生产代码将传入真实代码


然后每个测试应该设置一个场景。例如,您可以假装获得了具有各种参数的有效JSON。您可以假装得到各种错误响应。

非常感谢您。你的评论节省了我很多时间。