У меня есть MyClass
, в котором в качестве поля указано OtherClass
:
public class MyClass
{
@Autowired
private OtherClass other;
public void foo() {
// Some interactions
other.bar(someParameter);
}
}
public class OtherClass
{
public void bar() {
// Some interactions
if (someConditionThatIsTrue) {
baz(someParam);
}
}
public void baz(SomeParamClass param) {
// Some interactions
}
}
Для тестирования MyClass
я хочу проверить, что OtherClass.baz()
был вызван с MyClass.foo()
. Вот что у меня есть:
@RunWith(MockitoJUnitRunner.class)
public class MyClassTest {
@InjectMocks
private MyClass myClass;
@Mock
private OtherClass otherClass;
@Test
public void testFoo_whenFooIsCalled_shouldTriggerBaz() {
// Some setups
myClass.foo();
verify(otherClass, times(1)).baz(any());
}
}
Приведенный выше тест не обнаруживает OtherClass.baz()
, но обнаруживает OtherClass.bar()
:
Wanted but not invoked: otherClass.baz( <any> ); -> at MyClassTest.testFoo_whenFooIsCalled_shouldTriggerBaz(MyClassTest.java:12) However, there were other interactions with this mock: otherClass.bar( "some parameter" ); -> at MyClass.foo(MyClass.java:7)
Без рефакторинга MyClass
, возможно ли обнаружить экземпляр OtherClass.baz()
из теста?