Юнит тесты реально спасают, я вот написал тест:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
- (void)testDeviceTypeItemInit { NSDictionary *dic = @{@"name":@"wifi_relay", @"needsControlCenter":@(YES), @"needsControlDevice":@(NO)}; REDeviceTypeItem *deviceTypeItem = [[REDeviceTypeItem alloc] initWithDic:dic]; XCTAssertNotNil(deviceTypeItem); XCTAssert([deviceTypeItem.name isEqualToString:@"wifi_relay"]); XCTAssert([deviceTypeItem.localizedName isEqualToString:@"Умное Wi-Fi реле"]); XCTAssertTrue(deviceTypeItem.needsControlCenter); XCTAssertFalse(deviceTypeItem.needsControlDevice); } |
и он не прошел. Оказалось, что я забыл проставить boolValue тут:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
- (instancetype)initWithDic:(NSDictionary *)dic { self = [super init]; if (self) { _name = dic[@"name"]; _localizedName = NSLocalizedString(_name, nil); _needsControlCenter = [dic[@"needsControlCenter"] boolValue]; _needsControlDevice = [dic[@"needsControlDevice"] boolValue]; } return self; } |
Что интересно, без boolValue никаких warnings и тем более ошибок сборки.