2012-07-09 2 views
0

OCMock을 확인하도록 설정하려고합니다.OCMock : 매개 변수 검사 구문을 설정하십시오.

나는 다음과 같은 방법을 포함하는 프로토콜, TaskManagerDelegate,이 같은 내 모의 객체를 설정 한 후

- (void) addTasks:(NSArray *) tasksToAdd; 

,

id mockTaskManagerDelegate = [OCMockObject mockForProtocol:@protocol(TaskManagerDelegate)]; 

내가 좋아 테스트중인 클래스에 객체를 할당이 this,

taskManager.Whatever = mockTaskManagerDelegate; 

내 taskManager에서 메소드를 호출하고 hen은 addTasks 메소드가 TaskManagerDelegate에서 호출되었는지와 전달 된 배열에 정확히 하나의 객체가 있는지 확인하려고합니다.

지금까지 OCMArg 클래스를 사용하여 매개 변수가 전달되었는지 감지했지만 특정 유형이 전송되었는지 확인하는 방법을 모의하고 있거나 모의 전달을 위해 보낸 객체를 확인하는 방법에 대해 고심하고 있습니다. 특정 테스트 (예를 들어 정확히 한 번만 계산할 수 있음). 나는 C# 배경에서 왔고 일반적으로 Moq을 사용합니다. lamda 함수를 사용하여 조롱 된 객체에 전송되는 매개 변수에 대한 특정 검사를 수행 할 수 있습니다.

누구나 OCMock으로이를 수행하는 방법을 알고 있습니까? 아니면 개념적으로 불가능한 이유가 있습니까?

감사의 OCMock 사이트에서

답변

0

특징 설명이 있습니다 ;-)

"목표 - C 블록을 사용할 수있는 경우는 다음과 같이 블록과 인수를 확인할 수 있습니다 : 블록을 사용할 수없는 경우

[[mock expect] someMethod:[OCMArg checkWithBlock:^(id value) { /* return YES if value is ok */ }]]; 

은? 환경에서 당신을 당신을 위해 그 일이 있습니까시겠습니까?

0

동일한 요구 사항을 갖고 카테고리를 만들었습니다.

@implementation OCMArg (IsOfClass) 

+ (id)isOfClass:(Class)aClass 
{ 
    BOOL (^classCheck)(id) = ^BOOL(id obj) { 
     return [obj isKindOfClass:aClass]; 
    }; 

    return [[OCMBlockConstraint alloc] initWithConstraintBlock:classCheck]; 
} 

@end