gpt4 book ai didi

ios - 如何将 OCMock 对象与调用 isKindOfClass 的代码一起使用?

转载 作者:可可西里 更新时间:2023-11-01 03:29:17 25 4
gpt4 key购买 nike

我想用 OCMock 测试一些代码。

代码的内部是在我提供给代码的模拟对象上调用 [NSObject isKindOfClass],如下所示:

if ([object isKindOfClass:[FancyClass class]]) { ...}

但是,当我提供一个像这样创建的基于 OCMockObject 的模拟时:

mock = [OCMockObject mockForClass:[FancyClass class]];

它似乎没有通过 isKindOfClass 测试。

有什么建议吗?

最佳答案

一般规则是,如果您正在调用 isKindOfClass:并且您没有传递 plist 类之一(例如 NSString 或 NSNumber),您做错了。

如果该方法根据其参数是哪个类做两个或更多不同的事情,则将其分解为多个方法,并分别测试每个方法。

如果该方法只做一件事,但必须根据它是哪个类与对象进行不同的交互,那么:

  1. 制定协议(protocol)。 (Obj-C 中的协议(protocol)在其他一些 OO 语言中称为“接口(interface)”,例如 Java。)
  2. 使许多类都符合协议(protocol)。如有必要,使用类别从外部添加必要的方法。
  3. 让被测方法检查是否符合协议(protocol),代替当前的 isKindOfClass:检查。
  4. 让被测方法使用协议(protocol)中的方法。

关于ios - 如何将 OCMock 对象与调用 isKindOfClass 的代码一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/490148/

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