【问题标题】:Way of setting instance variable for unit testing为单元测试设置实例变量的方法
【发布时间】:2014-10-16 23:35:44
【问题描述】:

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

NSString *name

在 TimePass 的 (.m) 文件中,我为我的属性名称定义了一个构造函数

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

当我在单元测试类中测试它的XCTAssertNotNil 时,它给了我一个错误。我正在测试它是否是nil。如果我用_name 替换self.name,它就可以正常工作。

【问题讨论】:

    标签: ios unit-testing instance-variables


    【解决方案1】:

    您不想像以前那样覆盖属性的设置器,因为您可能会陷入无限循环。考虑你的方法:

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

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

    与其创建属性,不如使用这样的实例变量:

    #import <XCTest/XCTest.h>
    
    @interface YourTestClass : XCTestCase {
        NSString *_name;
    }
    
    @end
    
    @implementation YourTestClass
    
    - (void)setUp {
        [super setUp];
    
        _name = @"aseem";
    }
    
    
    @end
    

    【讨论】:

      猜你喜欢
      • 2018-08-01
      • 2017-08-24
      • 2012-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-12
      • 2014-02-25
      • 1970-01-01
      相关资源
      最近更新 更多