Как сделать Perl зависимым от машины или платформы TDD? - PullRequest
5 голосов
/ 22 января 2009

Как мне протестировать функцию или модуль, зависящий от машины или платформы? Например, что-то, что выглядит / зависит от $^O или от модуля типа Net :: Ifconfig :: Wrapper ? Мне не нужно проверять, что Net :: Ifconfig :: Wrapper возвращает правильные значения, но мне нужно проверить, правильно ли я поступаю с этими значениями.

Спасибо!

РЕДАКТИРОВАТЬ: Тестирование $^O оказалось проще, чем я думал:

{
    # <~> $ perl -e 'print $^O'
    # linux

    local $^O = 'linux';
    $rc = GetOSType();
    is($rc, $OS_LINUX, 'OS Check - linux');
}

Почему-то я думал, что это переменная только для чтения.

Ответы [ 2 ]

5 голосов
/ 23 января 2009

Чтобы прокомментировать предложение Джейсона фиктивных объектов , вам следует взглянуть на статью "Взаимодействие с трудно проверяемыми элементами управления третьей стороны" Миско Хевери . Он напрямую касается тестирования сторонних компонентов.

3 голосов
/ 23 января 2009

Обычно вы используете фиктивные объекты , чтобы "подделать" результаты этих системных вызовов.

Во время тестирования используйте фиктивные объекты и пусть они возвращают различные результаты, которые вы ожидаете на разных платформах, проверяя, правильно ли реагирует ваш код в этих случаях.

...