У меня есть набор тестов с сотнями тестов для модуля Perl, который я еще не выпустил, который представляет собой интерфейс командной строки.Поскольку это интерфейс командной строки, все тесты (возможно, до сих пор) написаны для перетаскивания кода в шаблон и последующего вызова сценария шаблона с помощью системного вызова.
Недавно я добавил необязательную зависимость от третьейсторонний модуль, который не является частью ядра Perl.Я знаю, что мой модуль работает независимо от того, установлен этот модуль или нет, потому что у меня есть компьютер с ним и один без него, и модуль работает без ошибок в каждом случае.Тем не менее, я хотел бы иметь возможность написать тест, чтобы подтвердить, что мой модуль будет работать, когда сторонний модуль отсутствует - и я бы хотел, чтобы этот тест работал, даже если сторонний модуль равен установлен, но ведет себя так, как будто это не так.
В идеале, я мог бы использовать структуру, которую я создал для тестирования, которая выполняет системный вызов шаблонного скрипта.Я знаю, что мог бы написать отдельный тестовый скрипт, который манипулирует @INC в блоке BEGIN, импортирует конкретные методы, использующие модуль, и вызывает их как модульный тест.Но я хотел бы знать, есть ли способ использовать структуру тестов, в которой я уже использовал все остальные мои тесты, а именно совершать системный вызов.
Так есть ли способ исключить модульот импорта через опцию командной строки perl?Я пробовал -M-Module, но код use Module
все еще импортирует модуль.
Кстати, мой модуль использует сторонний модуль внутри eval, что я и сделал его необязательным.