mocking - कैसे मॉकोटो में एक ArgumentMatcher नकारना?




mockito (2)

ऐसा लगता है कि आप AdditionalMatchers.not मैटचेर्स के रूप में कस्टम मैचर का उपयोग नहीं कर सकते हैं। विधि पैरामीटर नहीं।

हालांकि, आप हमाक्रिस्ट org.hamcrest.CoreMatchers का उपयोग कर सकते हैं। यह काम करना चाहिए:

Mockito.doReturn(false).when(mock).addAll(Mockito.argThat(CoreMatchers.not(new IsListOf2Elements())));

आशा करता हूँ की ये काम करेगा

मैंने एक ArgumentMatcher बनाया है,

private class IsListOf2Elements implements ArgumentMatcher<List<String>>{
    @Override
    public boolean matches(List<String> argument) {
        return ((List<String>)argument).size()==2;
    }
}

मैं इस मैच को नकारना चाहता हूं, इसलिए मैच 2 का आकार नहीं है,

Mockito.doReturn(false).when(mock).addAll(Mockito.argThat(AdditionalMatchers.not(new IsListOf2Elements())));

लेकिन यह सही नहीं है। मुझे मिला,

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 
No matchers found for additional matcher Not(?)
-> at my.test.own.Mockito_aTest.test4e(Mockito_aTest.java:136)

मुझे इसका जवाब मिला। बारी के आसपास है,

Mockito.doReturn(false).when(mock).addAll(AdditionalMatchers‌​.not(Mockito.argThat‌​(new IsListOf2Elements())));

इसका कारण यह है कि AdditionalMatchers‌​.not Mockito.argThat‌ । एक पंजीकृत Mockito.argThat‌ और Mockito.argThat‌ नहीं करता है।





mockito