为单元测试设置实例变量的方法

时间:2014-08-23 04:31:44

标签: ios unit-testing instance-variables

我有一个名为NSObject的TimePass子类的类。它有一个属性

NSString *name

在TimePass的(.m)文件中我为我的属性名称

定义了一个构造函数
-(NSString) name {
    self.name = @"aseem";
    return self.name;
}

当我在单元测试类中测试XCTAssertNotNil时,它给出了一个错误。我正在测试它是nil。如果我将self.name替换为_name,则可以正常使用。

1 个答案:

答案 0 :(得分:0)

您不希望像您一样覆盖属性的setter,因为您可能最终会进入无限循环。考虑一下你的方法:

- (NSString *)name {
   self.name = @"aseem";
   return self.name;
}

你将self.name设置为@“aseem”,然后返回self.name,所以当你实际使用self.name做任何事情时,你实际上调用你刚创建的名字方法,因此你再次将self.name设置为aseem并告诉它返回self.name,再次调用该方法,依此类推。简而言之,在返回的旁路中使用_name实例变量一遍又一遍地调用该函数,并简单地返回您刚设置的字符串。

不要创建属性,只需使用如下的实例变量:

#import <XCTest/XCTest.h>

@interface YourTestClass : XCTestCase {
    NSString *_name;
}

@end

@implementation YourTestClass

- (void)setUp {
    [super setUp];

    _name = @"aseem";
}


@end
相关问题