2013-07-22 1 views
0

단위 테스트를 위해 OCMockito을 사용하려고합니다. 지금은 UserDefaults (의존성 주입을 통해)을 조롱하기 위해 그것을 사용하고 있습니다.OCMockito를 사용하여 UserDefault에 삽입 된 값을 확인하는 방법

내가 다시에 의해 반환되는 것을 제어 할 수 [given([mockUserDefaults objectForKey:@"some key"]) willReturn:@"a value I want"];

이제 내 질문 : 어떻게 모의 UserDefaults로 설정 한 사용자 값을 확인할 수 있습니까?

예를 들어, 사용자가 발행 된 경우 : [self.userDefaults setObject:[NSDate date] forKey:"example"];

가 어떻게 모의 userDefaults에서 다시 date을받을 수 있나요?

+0

'[self.userDefaults objectForKey : @ "example"]'을 사용하여 직접 시도했지만 결과가 올바르지 않습니다. – aha

답변

2

OCMockito에는 (아직) 인수를 캡처하고 반환하는 방법이 없습니다. 대신 각 인수는 OCHamcrest 매처를 만족해야합니다. 정규 표현자가 지정되어 있지 않은 경우는 equalTo으로 간주됩니다.

테스트 [NSDate date]은 일반적으로 날짜를 제어 할 수 없기 때문에 일반적으로 단위 테스트에서 좋지 않습니다. 예를 들어 인수가 인 경우 NSDate라는 확인이 있습니다. (sut는 "시험 시스템"입니다.)

[verify(sut.userDefaults) setObject:instanceOf([NSDate class]) forKey:@"example"]; 

그래서 여기에 첫 번째 정규 어떤있는 NSDate에 맞게 instanceOf입니다.

는 두 번째 정규 암시입니다 equalTo(@"example) 업데이트

:

MKTArgumentCaptor *argument = [[MKTArgumentCaptor alloc] init]; 
[verify(sut.userDefaults) setObject:[argument capture] forKey:@"example"]; 

당신은 함께 촬영 인수를 검색 할 수 있습니다

OCMockito 1.1.0 MKTArgumentCaptor를 사용하여 인수를 캡처 할 수있는 방법을 가지고 있습니다 [argument value] 또는 캡처 된 모든 인수의 배열 [argument allValues].

+0

@ Jon! 나는 [Quality Coding] (http://qualitycoding.org/)에서 스크린 캐스트를보고 있습니다. 그들은 우리에게 새로운 시작을 위해 매우 도움이됩니다! – aha

+0

OCMock은 어떻습니까? 그것을 캡처하고 반환합니까? – huggie

+1

OCMockito 1.1.0은 인수를 캡처하는 방법을 추가합니다. –