ios - Xcode 5 单元测试看到错误的类

标签 ios xcode unit-testing xcode5 jsonmodel

我遇到了一个奇怪的情况,单元测试的执行与一段代码的正常执行不同。

特别是,我正在使用一个名为 JSONModel 的库,当我尝试从 JSON 字符串反序列化对象时,当我逐步执行测试用例时,特别是一行会导致问题:

if ( [[property.type class] isSubclassOfClass:[JSONModel class]] ) ...

如果我在此行之前(或之后)放置断点并执行:
expr [[property.type class] isSubclassOfClass:[JSONModel class]]

...在调试器中,它打印 \x01作为值(即真),但是当我实际执行指令指针时,它的行为就好像它是假的,而是进入 else block 。同样,在调试器中输入表达式再次显示它为真,即使仍然如此。

我很好奇是否有人以前见过类似的行为并对可能出现的问题有任何建议。我很确定我没有包含任何不同的定义,除非 Xcode 有不同的内部 cocoa 类实现进行测试。

更新:这里有一些更奇怪的证据:我添加了一些 NSLog语句来了解执行是如何看待事物的。如果我登录 property.type.superclass我得到 JSONModel返回(如预期的那样);但是,如果我登录 property.type.superclass == [JSONModel class]我得到 false !

对我来说,这表明单元测试执行所看到的 JSONModel 在某种程度上是我在运行时看到的不同的 JSONModel 类(以及它应该看到的)。但是,这是如何发生的,我无法弄清楚。

这可能是由前向类声明或类似的东西引起的吗?

最佳答案

好吧,我似乎通过实验发现了一个“解决方案”。事实证明,如果我替换 [JSONModel class]NSClassFromString(@"JSONModel")它可以游泳!

现在为什么会这样,我不能说,并且会给谁能解释它的答案!

关于ios - Xcode 5 单元测试看到错误的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21394919/

相关文章:

ios - 我们可以使用一个具有两种不同编程语言的两个不同项目的单个应用程序吗?

xcode - 像 CocoaPods 一样将项目添加到 Xcode Workspace

iphone - 在 Objective C 中格式化 NSNumber

c# - 如何使用 Moq 创建回声模拟?

c# - 在私有(private)委托(delegate)方法中测试异常

ios - 如何使 MasterDetailPage 图标 VoiceOver 易于访问?

ios - 向 UICollectionView 的第一个和最后一个单元格添加填充

ios - 如何同时测试 iOS 5 和 iOS 4 上的构建

python-3.x - 使用 pytest,如何使用和不使用配置文件测试 Flask 应用程序的配置?

iphone - 工具栏和导航栏不良动画