У меня есть код, похожий на этотКак я могу назвать фактический конструктор объекта mockito mockito?
class superClass{
public String transform(String str);
//lots of logic including ajax calls
return("Modified"+str);
}
class baseClass extends superClass{
private fetchData;
baseClass(FetchData fetchData){
this.fetchData = fetchData;
}
public String parse()
str = fetchData.get();
//some more logic to modify str
return transform(str);
}
и я использую Mockito и JUnit, чтобы проверить его. Я насмешливый baseClass
и делать что-то вроде этого
baseClass baseMock = Mockito.mock(baseClass.class);
Mockito.when(baseMock.parse()).thenCallRealMethod();
Mockito.when(baseMock.transform()).thenReturn("Something");
Как я могу привнести макет fetchData
, как он вводится через конструктор?
вы не можете. Вы должны либо использовать отражение, либо выставить сеттер в своем базовом классе. – SMA
Что вы тестируете, 'baseClass'? Если это так, я думаю, вы можете не понимать, как тестировать. Если вы хотите протестировать 'baseClass', вы бы не издевались над ним. Вы издеваетесь над тем, что требует, чтобы его не тестировали. Если вы хотите издеваться над 'FetchData', вы можете легко сделать это, передав' baseClass' другую реализацию FetchData (макет). Кроме того, ваше именование немного испорчено. Суперкласс - это базовый класс. Ваш 'baseClass' должен быть' DerivedClass', и ваши имена классов должны начинаться с заглавной буквы. И, пожалуйста, правильно отформатируйте свой код, он также не компилируется, как сейчас. –
Подсказка: имена классов java переходят в UpperCase. Всегда. – GhostCat