i ont ancien code qui na pas utiliser TDD maintenant je veux écrire un test pour une fonction qui ressemble à cesimulez une instance nouvellement créée?
function somefunction($someargs){
// do a few checks on $someargs
$database = new DB_PG();
$result = $database->select($query);
// do some changes on result
return $result;
}
depuis im pas beaucoup expirienced avec PHPUnit et les tests en général ma question est la suivante: comment puis-je me moquer de DB_PG? i essayé getMock() dans mon test, mais étant donné que la fonction utilise « nouvelle » pour obtenir une instance mon objet fantaisie est ignorée, ce qui est logique
donc je ne vois que 2 options
- certaines caractéristiques de PHPUnit je ne sais pas - ce qui est la raison pour laquelle je demande ici ^^
- je dois modifier l'ancien code - que je sais serait mieux
donc, tout le monde connaît une réponse pour l'option 1?
thx tous
Comment configurez-vous ce test? Avez-vous lu cet article sur les doubles de test? Est-ce une fonction autonome, ou est-ce une méthode qui fait partie d'une classe plus large? À quoi ressemblent vos tests (using getMock)? –
* Que voulez-vous dire par configuration? * ouais je connais cet article, mais je ne suis pas sûr de savoir quel est votre point ici? * sa fonction autonome je veux tester et un test il essayer d'obtenir l'exécution ressemble à cette fonction test_someFunctionFailed() {$ pgmock = $ this-> getMock ('DB_PG', array ('select')) $ pgmock-> s'attend à ($ this-> any()) -> méthode ('select') -> va ($ this-> returnValue (null)) $ rval = somefunction(); $ this-> assertNull ($ rval); } Actuellement, Erreur fatale: Appel à la méthode non définie DB_PG :: select() dans ... –