我想对以下类进行单元测试:
@Data
@AllArgsConstructor
public class MyClass {
private MyValueClass valueObject;
public BigDecimal someMethod(int startId, int endId) {
List<BigDecimal> values = valueObject.get(startId, endId);
...
我试着嘲笑
MyValueClass
它看起来像:
@Value //lombok annotation
public class MyValueClass {
private List<Data> someData;
public List<BigDecimal> get(int startId, int endId) {
//code to get subset of someData with ids between startId and endId
}
但是当我运行这个junit(jupiter)测试时:
@ExtendWith(MockitoExtension.class)
class MyClassTest {
private MyClass myClass;
@Mock
private MyValueClass valueOjectMock;
@BeforeEach
public void setUp() {
myClass= new myClass(valueOjectMock);
}
@Test
void test() {
when(valueOjectMock.get(1,5))
.thenReturn(new ArrayList<>());
....
}
}
我得到以下错误:
org.mockito.exceptions.base.MockitoException:
Cannot mock/spy class com.seasset.funds.performance.domain.FundReturns
Mockito cannot mock/spy because :
- final class
at org.mockito.junit.jupiter.MockitoExtension.beforeEach(MockitoExtension.java:153)
但是
MyValueClass
不是最终的。为什么会出现此错误?我怎么能嘲笑这门课?