2013-09-01 2 views
0

Я новичок в разработке, основанной на тестах, и задаю основной вопрос. Как получить доступ к приватным свойствам для модульного тестирования? Есть много ответов на то, как вы обращаетесь к методам, но я не смог найти много свойств. Вот что я получил сейчас для своего класса CDTest. Исключая некоторые импортированные заголовки для удобства чтения.OCUnit on private properties

CDTest.h

@interface CDTest : NSObject 

@end 

CDTest.m

#import "CDTest.h" 
#import "CDTest+Protected.h" 

@interface CDTest() 

@property (strong, nonatomic) NSManagedObjectContext *context; 

@end 

@implementation CDTest 

- (void)setup 
{ 
    //Sets up the context 
} 

@end 

CDTest + Protected.h

@interface CDTest() 

- (void)setup; 

@end 

тест блока .m файл

#import "CDTest.h" 
#import "CDTest+Protected.h" 

@implementation CDTestTests 
{ 
    CDTest *cdTest; 
} 

- (void)setUp 
{ 
    [super setUp]; 
    cdTest = [CDTest new]; 
} 

- (void)testSetup 
{ 
    [cdTest setup]; 
    //Now I need access to the properties in cdTest to validate them 
} 

@end 
+0

Хотеть тест для доступа к частной собственности является кодом запах. Попробуйте полностью протестировать свой публичный API. Если вы скажете: «Но мне это действительно нужно», послушайте свой тест: другой класс пытается выбраться. См. Http://qualitycoding.org/testability-vs-hiding/ –

ответ

1

В Objective-C свойствами являются методы (каждое свойство является геттером и сеттер, если оно читается/записывается).

Просто объявить свойство в вашей защищенной категории, которые должны быть объявлены что-то вроде этого

@interface CDTest(Protected) 

- (void)setup; 
@property (strong, nonatomic) NSManagedObjectContext *context; 

@end 
+0

Duh! Не могу поверить, что я пропустил это. Благодарю. – BlueVoodoo

 Смежные вопросы

  • Нет связанных вопросов^_^