2017-09-27 12 views
0
public class MyClass { 

    public int result(){ 
    int result = calculate(new ValueProvider()); 
      return result; 
     } 

    public int calculate(ValueProvider provider){ 
      return provider.getSalary(); 
     } 

} 

public class ValueProvider { 

    public int getSalary(){ 
     return 10000000; 
    } 
} 

私はメソッドresult()をテストする必要がありますが、2番目のメソッドを計算してデフォルト値を返す必要があります。同じクラスの内部テストメソッドと呼ばれるモックメソッド

答えて

0

モキートspyを使用して部分モックを作成します。例えば

:このテストケースで

public class TestMyClass { 

    @Test 
    public void aTest() { 
     MyClass spy = Mockito.spy(MyClass.class); 

     // this will cause MyClass.calculate() to return 5 when it 
     // is invoked with *any* instance of ValueProvider 
     Mockito.doReturn(5).when(spy).calculate(Mockito.any(ValueProvider.class)); 

     Assert.assertEquals(123, spy.result()); 
    } 
} 
calculate

上の呼び出しはモックしかしresult上の呼び出しは、実際です。 the docs

実際のオブジェクトのスパイを作成することができます。スパイを使用すると、実際のメソッドが呼び出されます(メソッドがスタブされている場合を除く)。 `新しいValueProvider()`に一致することができなかったことを示唆している

+0

期待できないとして、それはその計算値を返さない5 –

+0

は、私がValueProviderのequalsメソッドの実装方法は考えています。これはあなたのクラスなので、これを知っているでしょう。おそらく、 'caluclate()'の期待値を設定するときに別の正規表現を使用してください。 – glytching

+0

質問にvalueProviderコードを追加しましたが、今理解できます。 –

関連する問題