与iOS单元测试的混淆

与iOS单元测试的混淆,ios,objective-c,json,unit-testing,xctest,Ios,Objective C,Json,Unit Testing,Xctest,我可能对iOS Xcode中的XCTests有误解 我想测试在用户输入json数据后,我是否获得了正确的json数据 我有一个名为HttpRequest.h和.m的obj c类文件。此类中的代码主要用于连接和设置要获取或发布的HttpRequest 在我的viewController X中,有一种方法可以获取数据并将其保存在字典中 我的问题是,如何将viewController X中获取的同一个字典与test.m文件进行比较,并将其应用于XctaserteQualobjects之类的代码。在我阅

我可能对iOS Xcode中的XCTests有误解

我想测试在用户输入json数据后,我是否获得了正确的json数据

我有一个名为HttpRequest.h和.m的obj c类文件。此类中的代码主要用于连接和设置要获取或发布的HttpRequest

在我的viewController X中,有一种方法可以获取数据并将其保存在字典中


我的问题是,如何将viewController X中获取的同一个字典与test.m文件进行比较,并将其应用于XctaserteQualobjects之类的代码。在我阅读/观看的大多数教程中,它们基本上建立了一个新的json方法来获取.m文件中的数据。所以我有点困惑,单元测试应该如何按照常规进行,如何根据我的代码正确地构造

如果您发现很难测试代码的特定部分,这通常是代码没有正确结构的一个好迹象

例如,从web服务获取数据不应该是视图控制器的工作。你应该有一个单独的类来实现这一点

您的请求类应该有自己的单元测试集,您只需测试该类的功能—您的视图控制器应该调用相同的方法。您将传入一些已知参数(以模拟用户输入)并检查预期响应

视图控制器对该响应所做的是一个独立的功能,并且应该使用已知的输入进行单独的测试,而不依赖于web服务

依赖于web服务运行的单元测试有点棘手——如果web服务关闭,即使代码没有问题,测试也会失败。这就是为什么人们在单元测试期间使用OHttpStubs之类的东西来返回对web调用的已知响应。话虽如此,有一组连接到web服务的测试是有用的,这有助于诊断服务端是否存在问题

我已经写过一种编写web服务使用者类的方法,这种方法可以促进测试并简化它们的使用,您可能会发现这很有用。github上有一个附带的示例项目,其中包括单元测试