与iOS单元测试混淆

时间:2014-03-26 21:07:41

标签: ios objective-c json unit-testing xctest

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

我想测试用户输入输入后是否收到正确的json数据。

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

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

我的问题是如何将viewController X中提取的相同字典抓取到我的test.m文件中进行比较并将其应用于XCTAssertEqualObjects等代码。在我阅读/观看的大多数教程中,他们基本上建立了一个新的json方法来获取数据 IN .m文件。所以我对如何按常规进行单元测试以及如何根据我的代码正确构造感到困惑。

1 个答案:

答案 0 :(得分:0)

如果您发现难以测试代码的特定部分,那通常是您的代码没有正确结构的好兆头。

例如,从Web服务获取数据不应该是视图控制器的工作。你应该(并且听起来像你这样做)一个单独的类来实现这一目标。

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

视图控制器对该响应的作用是单独的功能,并且应该具有单独的测试,具有已知输入,而不依赖于Web服务。

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

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

相关问题