2016-11-23 9 views
1
Class MyClass{ 
    method3(){ 
     if(condition){ 
     method1() 
     } 

     else{ 

     method2() 

     } 

    } 

    method1(){ 
    //do woo 
     } 

    method3(){ 
     //do foo 
     } 
} 

私はmethod3をテストしようとしています。そうでなければ、他のメソッドが呼び出されない場合のみです。0コールで確認する

MyClass myClassMock= mock(MyClass.class); 
     myClassMock.method3(); 
     verify(myClassMock, times(0)).method2(); 

しかし、これは私のmethod2を呼び出し、method2内部にNULLポインタをスローします。私の行動がmethod2には届かないので、method2に電話をかけずにこれをテストするにはどうすればいいですか?

+0

コンパイルの問題を修正したら、このテストスニペットはうまく動作しました。あなたは[mcve]を含めることができますか? – Mureinik

答えて

1

あなたはあなたが同様の方法を模擬することができますmethod2から返されたものを気にしない場合:

when(mock.method2(anyString())).thenAnswer("anything"); 

あなたはanyStringを交換し、次のように使用することができます。

when(mock.method2(any(MyClass.class))).thenReturn(anInstanceOfMyClass); 

または

verify(mock, never()).method2(); 

または

when(mock.method2()).thenReturn(instanceOfProperClass); 
+0

しかし、これはmethod2()を呼び出します。私はメソッド2を呼び出さないようにしてください。インサイドメソッド2私は第三者のインタフェースを呼び出して呼び出しを行って、ヌルポインタで失敗します。 – javascriptlearner

+0

パラメータはありますか? 2つの方法のうちの1つを使用します。 – xenteros

+0

@javascriptlearnerまたは最後のもの。 – xenteros

関連する問題