J'ai une suite de tests avec des centaines de tests pour un module perl que je n'ai pas encore publié et qui est une interface de ligne de commande. Comme il s'agit d'une interface de ligne de commande, les tests (jusqu'à présent peut-être) sont tous écrits pour déposer du code dans un modèle et ensuite appeler le modèle script en utilisant un appel système.
J'ai récemment ajouté une dépendance optionnelle sur un module tiers qui ne fait pas partie du noyau de Perl. Je sais que mon module fonctionne, que ce module soit installé ou non, car j'ai un ordinateur sur lequel il est installé et un autre sans et le module fonctionne sans erreur dans chaque cas. Cependant, j'aimerais pouvoir écrire un test pour confirmer que mon module fonctionne lorsque le module tiers est absent - et j'aimerais que ce test fonctionne même si le module tiers est installé. est installé, mais se comporte comme s'il ne l'était pas.
Idéalement, je pourrais utiliser la structure que j'ai mise en place pour les tests qui fait un appel système à un modèle script. Je sais que je pourrais écrire un test séparé script qui manipule @INC dans le bloc BEGIN, importe les méthodes particulières qui utilisent le module, et les appelle comme un test unitaire. Mais j'aimerais savoir s'il existe un moyen d'utiliser la structure de test que j'ai déjà fait utiliser à tous mes autres tests, qui consiste à faire un appel système.
Existe-t-il un moyen d'exclure un module de l'importation via une option de ligne de commande perl ? J'ai essayé -M-Module, mais le code use Module
importe toujours le module.
Par ailleurs, mon module utilise le module tiers à l'intérieur d'un eval, c'est pourquoi je l'ai rendu optionnel.