Problème pour faire le mock d'une classe
Bonjour,
Je suis confronté à un problème durant l'un de mes tests et je ne vois pas comment le contourner.
Voici la classe (et la méthode) que je veux tester
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| public void doCalculation(String idf, Calendar startDate)
throws CalculationException
{
//Initialisation du profil
Profil profil = null ;
try {
//Instancition du profil
profil = new profil(idf, startDate) ;
//Lecture des données
profil.read();
if (startDate.before(profil.getGroup().getBeginDate())) {
throw new IncoherenceDateException("Incoherence date for idf " + profil.getIdf()) ;
}
processResult(profil);
} |
Dans ma classe de test, ça donne ça :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
@RunWith(PowerMockRunner.class)
@PrepareForTest(Profil.class)
public class CalculationImplTest extends TestCase{
@Spy
Profil mockedProfil = new Profil ("123456789012", getStartDate(2017, Calendar.JANUARY, 1)) ;
public void setUp() throws Exception {
super.setUp();
Mockito.doNothing().when(mockedProfil).readProfil();
}
public void testDoCalculationIncoherenceDate() throws Exception {
Calendar startDate= Calendar.getInstance() ;
CalculationImpl impl = new CalculationImpl() ;
impl.doCalculation("001", startDate);
} |
Mon mock sur la classe Profil n'a aucun impact et du coup l'appel de la méthode read est réalisé et fait planter le test.
Est ce qu'il y a un moyen pour que je puisse mocker la classe Profil et simuler l'appel de la méthode read ?
Pour le moment je travaille avec Mockito, mais j'ai aussi powermock dans mes dépendances et il est utilisé à d'autres endroits des tests.
Merci d'avance,