2016-07-21 3 views
0

mockito masters, 나는 당신에게 도전하고 있습니다! ;)인수를 취하지 않는 메소드를 조건부 조롱 할 수 있습니까?

나는 외부 조건에 따라 다른 결과를 제공하기 위해 인수를 취하지 않는 메서드를 가지고 있으며 그 동작을 조롱하고 싶습니다.

MyInterface myMock = mock(MyInterface.class); 
Sky sky = buildRandomSkyColor(); 

when(myMock.methodWithNoArguments()).thenReturn("blue").if(sky.isBlue()); 
when(myMock.methodWithNoArguments()).thenReturn("grey").if(sky.isGrey()); 

가 Mockito에 행동이 조건 종류를 가질 수 있습니다 : 예를 들어

,이 같은 일을하고 싶습니다? 또한 doStub()doAnswer()을 사용해 보았지만 어디에도 없습니다.

도움을 주시면 대단히 감사하겠습니다. 고마워요!

+1

당신은 방법 (필드, 다른 방법) – c0der

답변

5

이이

MyInterface myMock = mock(MyInterface.class); 
Sky sky = buildRandomSkyColor(); 

when(myMock.methodWithNoArguments()).thenAnswer(new Answer<String>(){ 
    String answer(InvocationOnMock invocation) { 
     if(sky.isBlue()) 
      return "blue"; 
     else 
      return "gray"; 
    } 
} 
-1
if (sky.isBlue()) {  
    when(myMock.methodWithNoArguments()).thenReturn("blue"); 
} else if (sky.isGrey()) { 
    when(myMock.methodWithNoArguments()).thenReturn("grey"); 
} 
+0

윌이 작품 예를 들어, 클래스 멤버에 의존하는 값을 반환 할 수 있습니다 할 수있는 사용자 정의 응답을 사용할 수 있을까? 나는 OP를 모으고 조롱 된 메소드가 호출 시점에 하늘의 색을 반환하고 모의 (이것은이 코드가하는 것)의 생성 순간의 색을 반환하지 않기를 원한다. – SQB

관련 문제