我正在尝试实现以下JUnit代码:
private BinlistsService binlistsService = Mockito.mock(BinlistsService.class);
@Mock
Optional<BinLists> binList = null;
@BeforeEach
public void beforeEachTest() throws IOException {
BinLists binLists = new BinLists();
binLists.setId(1);
....
binList = Optional.of(binLists);
}
@Test
public void testBinCountryCheckFilterImpl() {
when(binlistsService.findByName(anyString())).thenReturn(binList);
}
但是我得到了这个错误堆栈:
org.mockito.exceptions.base.MockitoException:
Cannot mock/spy class java.util.Optional
Mockito cannot mock/spy because :
- final class
at org.data
您知道如何解决此问题吗?
答案 0 :(得分:3)
删除@Mock
字段上的Optional<BinLists>
。
Optional
是一个简单的类,可以很容易地由您创建和控制,因此您无需对其进行模拟。只需在需要时创建一个实际的实例即可,而该实例已经在{{1}中完成了}:
beforeEachTest()
答案 1 :(得分:2)
mle2
不需要模拟(java核心类 final ),tpcfun<- function(t, tm.f, topt.f, pmax.f) {
perfmu = pi+(pmax.f-pi)*(1+((topt.f-t)/(topt.f-tm)))*(((t-ti)/(topt.f-ti))^((tm.f-ti)/(topt.f-tm.f)))
perfmu[perfmu<0] = 0.00001
return(perfmu)
}
m2<- mle2(performance ~ dnorm(mean=-sum(log(tpcfun(t=ac.temp, tm.f, topt.f, pmax.f))), sd=1), method='L-BFGS-B', lower=c(tm.f=1, topt.f=1, pmax.f=1), control=list(maxit=5000, parscale=c(tm.f=1e1, topt.f=1e1, pmax.f=1e2)), start=list(tm.f=15, topt.f=20, pmax.f=150), data=perfdat)
summary(m2)
不需要模拟
class Optional
JUnit无法模拟最终的类,但是如果您需要这种异常的模拟技术,可以使用 PowerMock https://github.com/powermock/powermock