Я пытаюсь смоделировать класс, который имеет вложенный класс.Этот вложенный класс был с аргументом конструктора.Когда я пытаюсь протестировать использование mockito вместо mocking, выполняется настоящий метод.
Я сделал @InjectMocks для внешнего класса и @Mock для внутреннего класса.
//Actual Class to test using Mockito.
public class ClassA {
public void initMethod(String s1, String s2, String s3, String s4) throws Exception {
ClassB objB = null;
if (objB == null && s3 != null && s4 != null && s2 != null) {
SampleUtil.KeyStorePasswordPair pair = SampleUtil.getKeyStorePasswordPair(s3, s4);
objB = new ClassB(s1, s2, pair.keyStore, pair.keyPassword);
try {
objB.meth1(); //Note: meth1 and meth2 are void methods.
objB.meth2(); // These two methods only to be accessed. something like doNothing
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
Как обычно я пытался вызвать класс с помощью @Mock, но доступ к фактическому методу meth1 () осуществляется.
//Somthing which I tried
@RunWith(MockitoJUnitRunner.class)
public class MockitoTest {
@InjectMocks
ClassA classA;
@Mock
ClassB classB;
@Before
public void initMocks() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testInitClient() throws Exception {
// Setup
// Run the test
classA.initMethod("Lorem", "Ipsum", "TestStr1", "TestStr2");
doNothing().when(classB).meth1(); // This is the line need to be mocked. But instead calling the actual method and executing
// Verify the results
}
Внутренний метод ClassB должен быть смоделированвместо доступа к реальному методу.
Как новичок в мокито, я пытаюсь это прояснить.Но запутался в нескольких моментах, таких как доступ к пустому методу, поэтому SO не может использовать, когда тогда.Доступ к конструктору с параметром и т. Д.,