0

我试图覆盖测试用例

返回类对象的方法。

-(ClassName *)returnClass{

return _class;
}

-(void)test_ReturnClass{

id returnObj;

returnObj = [aClassNameObj returnClass];
STAssertNotNil(returnObj, @"return Not NULL Value");
STAssertEqualObjects(returnObj, [isKindOfClass: ClassName],@"");

}

我想比较一个节目STAssertEqualObjects isKindOfClass:ClassName是否有可能,如果是,请告诉我。

@All 提前致谢

4

1 回答 1

2

不清楚你在问什么。

  1. 如果要检查返回的对象的类是ClassName还是子类,可以使用以下内容:

    STAssertTrue([returnObj isKindOfClass:[ClassName class]], nil);
    
  2. 如果你想检查它是一个ClassName 而不是一个子类(这在单元测试中似乎是允许的,但在普通代码中是不允许的),而是使用这样的东西:

    STAssertTrue([returnObj isMemberOfClass:[ClassName class]], nil);
    
  3. 如果你真的想使用 STAssertEqualObjects,你可以使用类似这样的东西(这也检查类是否相等;它不允许实例成为子类):

    STAssertEqualObjects([returnObj class], [ClassName class], nil);
    

就个人而言,我会坚持使用选项 1。选项 2 是我在生产代码中从未需要使用的东西,选项 3 更糟糕(有一些合法用途[foo class],但将其与另一个类进行-equals:比较不是真的是其中之一)。

于 2013-02-21T02:45:16.217 回答