Nous utilisons beaucoup de bibliothèques partagées dans notre code. Dans ce cas particulier, une méthode statique est implémentée dans l'une de ces bibliothèques. Nous appelons cette méthode à différents endroits de notre code. Cependant, si nous voulons tester, nous aimerions isoler le processus, donc simuler l'implémentation de cette méthode.
Pour ce faire, nous envisageons de réimplémenter la méthode dans le binaire de test. Cela permettrait de s'assurer que notre implémentation est prise en compte à la place de celle de la librairie.
La question principale est la suivante : S'agit-il d'un mal absolu ? Dans l'affirmative, quelle est la solution à privilégier dans ce cas ?
Un exemple...
En-tête de la bibliothèque partagée :
static const bool theMethod(...);
Mise en œuvre de la méthode dans la bibliothèque partagée :
static const bool theMethod(...){
//The real implemetation does some fancy stuff here
return theRealValue;
}
Notre cas d'école :
#include <headerOfTheMethod.hpp>
//Our own "mocked" implementation
static const bool theMethod(...){
return true; //Lets say we always return true for the purpose of our test
}
//Here comes our code testing the class which is using that particular method
Note complémentaire : nous utilisons gcc comme compilateur, les bibliothèques sont liées dynamiquement.
UPDATE : Si c'était le cas pour les méthodes statiques. Ce serait un bon début, mais que se passerait-il s'il s'agissait d'une fonction membre d'une classe ?