我尝试用mockito测试以下spring服务类:
@Service
public class ObjectExportService {
@Autowired
protected List<SecuredService<? extends SecuredObject>> securedServices;
public void doStuff() {
for(int i = 0; i < this.securedServices.size(); i++){
SecuredService<? extends SecuredObject> securedSrv = this.securedServices.get(i);
//this access works
}
for (SecuredService<? extends SecuredObject> securedSrv : this.securedServices) { //this access does not work
}
}
}
这是我针对该服务的测试类:
@RunWith(MockitoJUnitRunner.class)
public class ObjectExportServiceTest {
@InjectMocks
private ObjectExportService objectExportService;
@Mock
protected List<SecuredService<? extends SecuredObject>> securedServices;
@Test
public void testDoStuff(){
objectExportService.doStuff();
Assert.assertTrue(true);
}
}
当我运行测试时,我得到一个nullpointerexception,但只在for-each循环中。
首先,我假设有一个与此线程中描述的类似的问题:我已经模拟了列表,因此需要模拟 iterator()
打电话。
该线程中提供的解决方案对我不起作用,因为我实际上是在自动生成一个列表。
1条答案
按热度按时间mkshixfv1#
所以我在另一个线程中偶然发现了这个解决方案。只需改变
@Mock
至@Spy
为我解决了问题: