我有一个简单的类来执行网络的东西。它是一个单例,它封装了 NSOperationQueue
在里面。当类的用户调用某个方法从网络获取数据时,该类创建了继承自 NSOperation
的操作类的正确实例。设置它并添加到执行队列中。显然,这种执行是在分离的线程中异步进行的。从网络获取数据后NSOperation
继承的对象通知我的网络类,并通知感兴趣的代表数据完成或错误。
问题是,如何进行单元测试来检查网络类的逻辑?另外,我实际上并不想测试服务器端的行为。我只想用模拟和预定义的答案替换对服务器的实际异步调用,以测试处理程序的行为。我想检查我的类(class)是如何工作的,而不是服务器端。我了解测试此类东西的常见逻辑,但我对使用 OCMock 有点困惑。
最佳答案将是代码示例。我在我的项目中使用 OCUnit 和 OCMock 进行单元测试。
此外,任何文章或 github 链接都是完美的。
最佳答案
如果所有异步调用都通过您的类中的内部方法,您可以简单地在您的对象上创建一个部分模拟并在该方法上使用 stub /预期。然后,您可以正常调用公共(public)方法并使用模拟来验证是否调用了内部方法。使用部分模拟会阻止调用真正的实现,因此不应发生网络事件。
至于另一半,来自异步操作的回调,只需调用将直接从您的测试中调用的方法,然后通过使用 OCUnit 断言检查其状态来检查您的类是否正确,或者,如果它反过来使用回调,以及另一个模拟。
关于ios - 如何用模拟和预定义的答案替换异步调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16875434/