2017-01-15 15 views
2

私はここ数日からテストケースを作成しています。私はヌル制約なしでorg.mockito.Matchers.anyの同等のものがあることを知りたいですか?Mockitoに相当し、nullでない制約があります

あなたが言う場合、私は意味:その後

when(reviewBuilder.saveReviewModel(any())).thenReturn(2L); 

saveReviewModelnullを含む任意のオブジェクトを取ることができます。 Mockito 1.10.19ライブラリを使用してメソッドにヌルオブジェクトだけを渡す方法はありますか?

+0

それはMockito 1.10.19です。 – user3681970

答えて

3

この条件を満たすカスタムマッチャーを書くことができます。

その後
class NotNullObjects extends ArgumentMatcher<Review> { 
    public boolean matches(Object object) { 
     return object!=null; 
    } 
} 

使い方

when(reviewBuilder.saveReviewModel(argThat(new NotNullObjects()))).thenReturn(2L); 

私の1つのアドバイスは、あなたの方法の入力NAとしてそこに期待することができますいくつかのインタフェースを考えることです。

0

あなたはverifyメソッド呼び出しでパラメータの予想されるタイプを指定する場合、これは動作します:

import static org.junit.Assert.fail; 

import org.junit.Rule; 
import org.junit.Test; 
import org.mockito.Mock; 
import org.mockito.Mockito; 
import org.mockito.junit.MockitoJUnit; 
import org.mockito.junit.MockitoRule; 

public class MockitoNotNullTest { 

    private static class Dependency1 { 

    } 

    private static class Dependency2 { 
     public void doesNotAcceptNull(Dependency1 d) { 

     } 
    } 

    private static class ClassUnderTest { 
     private final Dependency2 d2; 

     public ClassUnderTest(Dependency2 d2) { 
      this.d2 = d2; 
     } 

     public void passesNull() { 
      d2.doesNotAcceptNull(null); 
     } 

    } 

    @Rule 
    public MockitoRule mockitoRule = MockitoJUnit.rule(); 
    @Mock 
    Dependency2 d2; 

    @Test 
    public void passesNull_callsD1WithNull_verifyFails() { 
     ClassUnderTest classUnderTest = new ClassUnderTest(d2); 

     classUnderTest.passesNull(); 

     // fails as expected 
     Mockito.verify(d2).doesNotAcceptNull(Mockito.any(Dependency1.class)); 
    } 

} 

をし、結果は次のとおりです。

Argument(s) are different! Wanted: 
d2.doesNotAcceptNull(
    <any stackoverflow.MockitoNotNullTest.Dependency1> 
); 
-> at stackoverflow.MockitoNotNullTest.passesNull_callsD1WithNull_verifyFails(MockitoNotNullTest.java:48) 
Actual invocation has different arguments: 
d2.doesNotAcceptNull(
    null 
); 
-> at stackoverflow.MockitoNotNullTest$ClassUnderTest.passesNull(MockitoNotNullTest.java:32) 

    // ... 
関連する問題