2017-12-14 12 views
0
mockModule = OCMPartialMock(module); 
OCMStub([mockModule send:@"FOO"]).andReturn(YES); 
OCMStub([mockModule send:@"FOO"]).andReturn(NO); 

는 I 간단한 모형 모듈을 가지며, I는 문자열을 송신되면 no YES/발생 문제가 돌아 일부 스텁을 설정하는 것이 I는 두번 동일한 문자열을 설정하면 새 값이 아닌 첫 번째 값만 반환합니다.OCMock과 겹쳐 스터브 값

BOOL answer = [module send:@"FOO"] 
//answer should be NO, but is YES 

어떻게 내가 가장 최근에 설정 한 값으로 응답 할 수 있습니다 : 문제에 대한이 예에서

그래서 같은 전화를 기대 같이 설명된다?

답변

1

예 : 등의 메소드를 사용할 수 있습니다.

mockModule = OCMPartialMock(module); OCMExpect([mockModule send:@"FOO"]).andReturn(YES); OCMStub([mockModule send:@"FOO"]).andReturn(NO);

그들에 대한 의미하지 정확히 무엇을

하지만 일부 이해한다. 당신은 기본적으로 말하고 있습니다, 나는 이 호출 될 것이고, 실제로 그것이 일어 났을 때, 그 메소드가 스터브되기를 원합니다.

또한, 스텁을 "쌓을"수 있다면, 무엇이 잘못되었는지를 파악하는 것이 매우 어려울 수 있습니다. 그루터기의 최초의 호출이 발생하지 않는 경우, 2 번째의 호출은 최초의 호출의 값을 취득합니다.

+0

의견에 감사드립니다. 안드로이드에 대한 나의 단위 테스트를 위해서 나는 Mockito를 사용하고 chaining 기능을 가지고있다. 내 응용 프로그램의 경우 상태가있는 외부 장치와의 통신을 시뮬레이션하는 데 매우 유용합니다. 그 때 당신은 ... (mockModule.send ("FOO")) thenReturn (true) .thenReturn (false);와 같은 것을 설정할 수 있습니다. OCMock에서 같은 결과를 얻으려면 "andCall" 여기에는 순서대로 반환 할 항목 목록이 들어 있습니다. – xceph