2016-12-13 22 views
1

テストMockitoは、引数の不正使用はマッチャー可変引数

@RunWith(SpringRunner.class) 
@SpringBootTest(classes = MockabstractionApplication.class) 
public class SimpleTest { 

    @SpyBean 
    private SimpleService spySimpleService; 

    @Before 
    public void setup() { 
     initMocks(this); 
    } 

    @Test //fails 
    public void test() throws Exception { 
     when(spySimpleService.test(1, Mockito.<String>anyVararg())).thenReturn("Mocked!"); 
    } 

} 

サービス

@Service 
public class SimpleService { 

    public String test(int i, String... args) { 
     return "test"; 
    } 

} 

テストは次のメッセージで失敗します。

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 引数マッチャーの使用が無効です! 2つのマッチャーが予想され、1つが記録されました:

第1引数と任意の量のvarargsを使用する必要があります。

答えて

4

1つのパラメータにマッチャを使用する場合は、すべてのパラメータにマッチャを使用する必要があります。

when(spySimpleService.test(Mockito.eq(1), Mockito.<String>anyVararg())).thenReturn("Mocked!"); 
+1

を試してみてください。ありがとう!私はあなたの答えを7分で受け入れます。 – Feeco

0

あなたは、整合及び適切なパラメータ

spySimpleService.test(1, Mockito.<String>anyVararg())

両方を混在カントが

spySimpleService.test(anyInt(), Mockito.<String>anyVararg())

0

に置き換えることができ、私はあなたが両方の引数マッチャーを使用する必要があると思いますあなたがそこに混在して一致することはできません。

は `Mockito.eqは、(1)`トリックを行う

@Test //fails 
public void test() throws Exception { 
    when(spySimpleService.test(anyInt(), Mockito <String>anyVararg())).thenReturn("Mocked!"); 
} 
関連する問題