2015-01-23 8 views
1

OCMock에는 상호 작용을 확인하는 방법 OCMVerify이 있습니다. 그래서 나는 간단한 값 홀더 클래스 인 MyObjectData으로 다음을 수행했습니다.OCMVerify에서 인수가 올바른지 확인하십시오.

OCMVerify([dataStore createOrUpdateMyObject:[OCMArg isKindOfClass:[MyObjectData class]]]); 

이 작동하지만이 방법은이 클래스의 모든 객체로하지만 올바른 값으로 호출되지 않았는지 확인하기 원하기 때문에, 충분하지 않습니다.

// ... 

    OCMVerify([dataStore createOrUpdateMyObject:[OCMArg checkWithSelector:@selector(verifyMyObjectDataAfterSave:) onObject:self]]); 
} 

- (BOOL)verifyMyObjectDataAfterSave:(id)obj { 
    return YES; 
} 

그러나 obj 매개 변수 내가 전달 될 것으로 예상되는 MyObjectData 예를하지만 조롱 데이터 저장소에 프록시 OCMVerifier의 인스턴스가 아닌 : 그래서 나는 다음과 같은했다.

이제 질문은 어떻게 올바르게 인수를 확인할 수 있습니까?

답변

2

기대 하시겠습니까?

id mockObj = OCMPartialMock(dataStore); 
OCMExpect([mockObj createOrUpdateMyObject:[OCMArg checkWithBlock:^BOOL(MyObjectData *value) 
              { 
               XCTAssertEqual(value.someProperty, 999); 
               return [value isKindOfClass:[MyObjectData class]]; 
              }]]); 
[mockObj someMethod]; 
OCMVerifyAll(mockObj);