2016-07-21 5 views
0

mockitoマスター、私はあなたに挑戦しています! ;)引数を取らないメソッドを条件付きで嘲笑することは可能ですか?

私は引数を取らないメソッドを持っています。私は、外部条件によって異なる結果を提供するという振る舞いを模擬したいと思います。例えば

、私はこのような何かをしたいと思います:

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

関連する問題