Мой вопрос не этот вопрос. Я хочу смоделировать частные оболочки поля, такие как Integer и String. Кроме того, эти поля находятся в абстрактном суперклассе.
public abstract class SuperSample
{
private Integer var1;
private String var2;
private Service service;
pubic boolean foo()
{
int a = service.doStuff(var1, var2);
return subMethod(a);
}
protected abstract boolean subMethod(int var);
public void setVar1(Integer var1)
{
this.va1 = var1;
}
public Integer getVar1()
{
return var1;
}
public void setVar2(String var2)
{
this.var2 = var2;
}
public String getVar2()
{
return var2;
}
public void setService(Service service)
{
this.service = service;
}
public String getService()
{
return service;
}
}
public class Sample extends SuperSample
{
protected boolean subMethod(int var)
{
return var%2==0?true:false;
}
}
Spring. xml -
<bean id="superSample" class="SuperSample" abstract="true">
<property name="var1" value="2" />
<property name="var2" value="cool" />
</bean>
<bean id="sample" class="Sample" >
<property name="service" ref="service" />
</bean>
В моем джунте я не могу высмеивать или шпионить var1 или var2. При шпионаже / издевательстве над var1, var2 я получаю сообщение об ошибке:
org.mockito.exceptions.base.MockitoException: Невозможно издеваться над шпионским классом java .lang.Integer Mockito не может насмехаться / шпионить: - финальные классы - анонимные классы - примитивные типы
Я хочу высмеивать строку -
service.doStuff(var1, var2)
с чем-то вроде -
@UnitTest
public class SampleTest
{
@Mock
private Service service;
private Integer var1 = 2
private String var2 = "cool";
@InjectMocks
private Sample sample;
@Test
public void test()
{
MockitoAnnotations.initMocks(this);
Mockito.when(service.doStuff(var1, var2)).thenReturn(5);
}
}