gpt4 book ai didi

ios - 如何用模拟和预定义的答案替换异步调用?

转载 作者:行者123 更新时间:2023-12-01 18:21:38 25 4
gpt4 key购买 nike

我有一个简单的类来执行网络的东西。它是一个单例,它封装了 NSOperationQueue在里面。当类的用户调用某个方法从网络获取数据时,该类创建了继承自 NSOperation 的操作类的正确实例。设置它并添加到执行队列中。显然,这种执行是在分离的线程中异步进行的。从网络获取数据后NSOperation继承的对象通知我的网络类,并通知感兴趣的代表数据完成或错误。

问题是,如何进行单元测试来检查网络类的逻辑?另外,我实际上并不想测试服务器端的行为。我只想用模拟和预定义的答案替换对服务器的实际异步调用,以测试处理程序的行为。我想检查我的类(class)是如何工作的,而不是服务器端。我了解测试此类东西的常见逻辑,但我对使用 OCMock 有点困惑。
最佳答案将是代码示例。我在我的项目中使用 OCUnit 和 OCMock 进行单元测试。

此外,任何文章或 github 链接都是完美的。

最佳答案

如果所有异步调用都通过您的类中的内部方法,您可以简单地在您的对象上创建一个部分模拟并在该方法上使用 stub /预期。然后,您可以正常调用公共(public)方法并使用模拟来验证是否调用了内部方法。使用部分模拟会阻止调用真正的实现,因此不应发生网络事件。

至于另一半,来自异步操作的回调,只需调用将直接从您的测试中调用的方法,然后通过使用 OCUnit 断言检查其状态来检查您的类是否正确,或者,如果它反过来使用回调,以及另一个模拟。

关于ios - 如何用模拟和预定义的答案替换异步调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16875434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com