2015-06-24 13 views
0

У меня есть прецедент, где я должен проверить реальный метод, который вызывает метод внутри. Этот внутренний метод надо издеваться. Например,Использование Mockito spy для издевательства метода без указания точного аргумента

Class Sample { 
    boolean method(Foo foo) { 
    return innerMethod(new Goo(foo)); 
    } 
} 

Так что я хочу сделать следующее.

Sample sample = Mockito.spy(new Sample()); 
Foo foo = new Foo(); 
doReturn(false).when(sample).innerMethod(new Goo(foo)); 

assertEquals(false, sample.method(foo)); 

Проблема заключается в том, как я полагаю, внутренний метод никогда не издевался, так как аргументы Goo не являются одними и теми же объектами. Как мне обойти эту проблему?

+2

Используйте Сличитель: http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html#3 –

+0

Почему вы заботитесь, что его называют внутренний метод? Мне кажется, что вы тестируете свою внутреннюю реализацию вместо поведения. Почему бы вам просто не написать тест, который задал Foo в каком-то состоянии, он должен возвращать false/true? – blank

+0

@JBNizet, что было очень полезно. Используются 'Mockito.eq' и' Mockito.argThat' с расширением 'ArgumentMatcher '. – user592748

ответ

3

Используйте метод Matcher.any().

doReturn(false).when(sample).innerMethod(Matcher.any(Goo.class)); 

 Смежные вопросы

  • Нет связанных вопросов^_^