Я делаю некоторые тесты для класса Export Мне нужно высмеять метод, поэтому я сделал mockito (я новичок в Mockito)
public Class ExportServiceImpl implements ExportService{
@Autowired
Service service
public void export(){
String exportString = service.getPath();
domoreStuff() ....
}
А также
public Class ServiceImpl implements Service(){
public String getPath(){
return "thePath";
}
}
Мне нужно высмеять метод getPath(), поэтому я сделал это в TestNG
public class ExportTestNG(){
public textExport(){
Service serviceMock = Mockito.mock(Service.class);
Mockito.when(serviceMock.getData()).thenReturn("theNewPath");
System.out.println("serviceMock.getData() : " + serviceMock.getData()); // prints "theNewPath", OK
exportService.export(); // the getData() is not the mockito one
}
}
Возможно, я не исправил mockito, и я, возможно, не понял, как это работает. Есть идеи?
Вам необходимо подключить макет службы к объекту exportService. Если у вас есть сеттер для переменной члена службы, выполните следующие действия:
exportService.setService(serviceMock);// add this line.
exportService.export();
Если у вас нет сеттера, вам нужно будет выполнить проводку перед вызовом экспорта. Возможные варианты:
Вы можете использовать Mockito для инъекций для вас и избегать добавления методов setter.
@RunWith(MockitoJUnitRunner.class)
public class ExportTestNG(){
@InjectMocks
private ExportServiceImpl exportService;
@Mock
private Service serviceMock;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
}
public textExport(){
Mockito.when(serviceMock.getData()).thenReturn("theNewPath");
exportService.export();
}
}