Ho il seguente metodo per testare:
public List<MarkId> getMarkIdList(ICar carDoc) {
ICourseCar courseCarDoc = courseCarRep.get(carDoc);
List<MarkWag> markWagList = courseCarDoc.getMarks();
List<Integer> markIdList = new ArrayList<>();
for (MarkWag markWag : markWagList)
markIdList.add(markWag.getMarkId());
List<ICourseMark> courseMarkDocList = courseMarkRep.getList(markIdList);
List<MarkId> markIds = new ArrayList<>();
for (ICourseMark courseMark : courseMarkDocList)
markIds.add( new MarkId(courseMark.getMarkDescriptor()));
return markIds;
}
Questo è il test dell'unità che ho creato:
@RunWith(PowerMockRunner.class)
@SpringApplicationCourseuration(classes=SpringConf.class)
@PowerMockRunnerDelegate(SpringJUnit4ClassRunner.class)
@PowerMockIgnore({"javax.management.*"})
public class CourseCarTest {
@Mock private CourseCarRepImpl courseCarRep;
@Mock private CourseMarkRepImpl courseMarkRep;
@Mock private CourseCarDoc courseCat;
@Mock private ICourseCar courseCarDoc;
@Mock MarkWag markWag;
List<MarkWag> markWagList = new ArrayList<>();
@Mock ICourseMark courseMark;
List<ICourseMark> courseMarkDocList = new ArrayList<>();
@Mock ICar carDoc;
@InjectMocks
@Autowired
@Qualifier("CourseCarBO")
private CourseCarBO courseCarBo;
@Before
public void setup() throws Exception {
markWagList.add(markWag);
courseMarkDocList.add(courseMark);
whenNew(CourseCarRepImpl.class).withAnyArguments().thenReturn(courseCarRep);
whenNew(CourseMarkRepImpl.class).withAnyArguments().thenReturn(courseMarkRep);
when(courseCarRep.get(anyInt())).thenReturn(courseCarDoc);
when(courseCarDoc.getMarks()).thenReturn(markWagList);
when(markWag.getMarkId()).thenReturn(1);
when(courseMarkRep.getList(anyList())).thenReturn(courseMarkDocList);
when(courseMark.getMarkDescriptor()).thenReturn(1);
}
@Test
public void testGetMarkIdList() {
courseCarBo.getMarkIdList(1);
verify(courseCarRep).get(anyInt());
}
}
La mia intenzione era di avere un approccio ibrido, sia prendendo in giro alcuni oggetti e iniettando altri con Spring. Tuttavia ho notato che mentre deridevo uno degli oggetti, devo prendere in giro gli altri che seguono poiché dipendono l'uno dall'altro. Quindi mi sembra che non sia davvero possibile avere un approccio ibrido.
Riesci a individuare qualcosa di sbagliato nell'approccio utilizzato in questo test unitario?
Quando devo prendere in giro tutto, mi sembra di non provare nulla.
C'è un modo migliore? O il mio approccio è corretto, e prendere in giro tutto è la strada da percorrere?