Класс Site
предоставляется мне внешней командой и имеет частный конструктор.Отказывание частного конструктора
public class Site
{
int id;
String brand;
private Site(int id, String brand)
{
this.id = id;
this.brand = brand;
}
}
Класс SiteUtil (контролируется командой) является
public class SiteUtil
{
public static Site getSite()
{
Site site;
//Logic
return site;
}
}
Данные функции getSite()
применяет его логику требует сетевого вызова, поэтому он должен быть издевались. Он не имеет сеттера в настоящее время (возможно, чтобы поддерживать согласованность с источником данных, не уверен)
Я дразнить его следующим образом
Site mockSite = new Site(1,"Google");
PowerMockito.when(SiteUtil.getSite(1)).thenReturn(mockSite);
Код выше конечно компилировать, как доцент я использую общественность конструктор. Решение, которое я прочитал, состояло в том, чтобы высмеять частный конструктор объекта Site
. Я, однако в недоумении о том, как сделать это
Вы можете получить доступ к частным лицам с отражением java. – Tokazio
Не могли бы вы уточнить какой-то код или ссылки, на которые я мог бы обратить внимание? –
Ouch. Это ужасный дизайн API. Является ли «внешняя команда» одной в вашей организации или полностью отдельной? – chrylis