2016-08-25 6 views
0

내 수업에 개인 속성 인 배열을 조롱하고 싶습니다. 이렇게함으로써 단위 테스트에서 사용할 수있게 만들었습니다.ios : 개인 속성 모의

@interface MyViewController() 

@property (nonatomic, strong) NSArray myArray; 

@end 

내가 Person라는 종류가 있다고 가정하자이 배열은 사람 개체를 포함해야한다 (이것은 내 단위 테스트 파일 안에). 그래서 난 내 테스트 케이스

- (void)testBeneficiariesCount { 
    // This is an example of a functional test case. 
    // Use XCTAssert and related functions to verify your tests produce the correct results. 
    id mockArray = OCMClassMock([NSArray class]); 

    self.myVC.myarray = mockArray; 


    Person *p1 = [[Person alloc] init]; 
    Person *p2 = [[Person alloc] init]; 
    Person *p3 = [[Person alloc] init]; 
    Person *p4 = [[Person alloc] init]; 
    Person *p5 = [[Person alloc] init]; 

    p1.name = @“Alice"; p2.name = @“James”; p3.name = @“Oscar"; p4.name = @“Harri”; p5.name = @“John”; 
    persons = [NSArray arrayWithObjects:p1,p2,p3,p4,p5,nil]; 


    OCMStub([self.myVC myArray]).andReturn(persons); 

    XCTAssertEqual([self.myVC numberOfPersons], 5); 

} 

myVC에서 다음을 수행하고하는 것은 내가이 프로그램을 실행할 때, 테스트 케이스가 (0) is not equal to (5) 것을 불평 실패, numberOfPersons라는 메소드가 있습니다. 이것은 내가 조롱 된 배열을 인쇄하려고 시도했기 때문에 성공적으로 배열을 모의 할 수 없다는 것을 의미합니다.

일부 사람들은 내가 여기서 잘못하고있는 것을 말해 줄 수 있습니까?

답변

1

스텁에 모의이 필요하고 모양은 self.myVC은 모의가 아닙니다.

나중에 뷰 컨트롤러 및 스텁에 대해 partial mock을 만드는 것이 좋습니다. 당신은 어쨌든 myArray 게터 스텁해야하는 경우

MyViewController *partialMock = OCMPartialMock(self.myVC) 

OCMStub([partialMock myArray]).andReturn(persons); 

XCTAssertEqual([partialMock numberOfPersons], 5); 

BTW, 당신은 mockArray 사용이 필요하지 않습니다.