解除分配后使用objc_getClassList可发现的ocmock类对象并调用-stopMocking

时间:2015-12-04 03:42:09

标签: objective-c objective-c-runtime ocmock

我正在使用OCMock在XCTest测试套件中创建一些类模拟。我还有一个特定的单元测试,我在一个单独的测试类/模块中没有模拟。此测试查询运行时以查找具有符合NSSecureCoding的特定前缀的一组我的类,并对它们执行多个测试。

在测试中,我使用objc_getClassList获取类列表。我看到一些看起来像是被嘲笑的课程,例如:

FooType-0x004fba20-3301757833

我似乎无法弄清楚为什么他们仍在闲逛,因为:

  1. 我在测试-tearDown
  2. 中调用了-stopMocking
  3. 我没有存根任何类方法,只有实例方法
  4. 我已经将它缩小到这样一个事实:模拟对象被复制到另一个非模拟对象的初始化器中,在另一个测试和测试类/模块中。

    显然,如果你试图向这些类发送消息或操纵它们,你会崩溃类似于“NSInternalInconsistencyException”,“没有模拟类FooType-(地址掩码)-3301757833”。

    我的印象是元类和模拟在取消分配或者调用-stopMocking时会恢复正常。

0 个答案:

没有答案