Как выгрузить 'require' в ruby ​​/ rspec? - PullRequest
4 голосов
/ 23 марта 2012

В настоящее время мы выполняем тесты rspec, которые проверяют наличие определенных библиотек / моделей для загрузки. В частности, мы хотим проверить, что при создании объекта мы получаем правильный объект Watir: Watir :: Browser для FF и Chrome и Watir :: Safari для Safari.

Мы уже пытались сделать это: Выгрузить класс ruby ​​, но он просто удаляет константу, а это не то, что нам нужно.

Обычно это не было бы проблемой, но из-за проблем совместимости с safariwatir и watir-webdriver это не так. Это ошибки с:

superclass mismatch for class UnknownObjectException

И чтобы «исправить» это, мы должны выбрать, какой веб-драйвер загрузить (отсюда и оригинальную логику, которую мы планируем протестировать)

Есть ли способ решить это? Наши тесты проходят не только тогда, когда проходят в целом. Таким образом, мы в основном должны пропустить шаг, чтобы обойти требуемую проблему.

Ответы [ 3 ]

2 голосов
/ 24 марта 2012

Новый Anser: веб-драйвер NEWS FLASH теперь поддерживает Safari!откажитесь от сафариватира и сделайте все это с помощью webdriver.Я только что узнал об этом сегодня на Test Automation Bazaar, так что не буду особо разбираться в деталях ... Я ожидаю увидеть сообщения в блоге об этом от сообщества Watir на следующей неделе или около того, как только люди выздоровеют отконференции.

ОБНОВЛЕНИЕ: подробности в блоге watir-webdriver теперь о том, как заставить работать вещи с Safari

0 голосов
/ 23 марта 2012

Я обработал нечто похожее на это, используя условную логику, когда мне требуется драгоценный камень 'watir', так что требуется только одна версия в зависимости от того, для чего настроена среда.Я могу предоставить более подробную информацию позже, возможно, после того, как базар автоматизации тестирования watir закончится, и у меня будет немного времени, чтобы подумать и найти некоторые примеры кода для вас.

0 голосов
/ 23 марта 2012

Классы в Ruby являются объектами, но идея классов как «один на исполнение / пространство объектов» существует только потому, что объекты классов Ruby назначаются как константы.Можно динамически проверять тип объекта. Если этого недостаточно, вы можете указать тип утки. Поскольку вы упомянули о проблемах совместимости, существуют методы, которые существуют для одного, но не для другого (который вы можете проверить), или естьметоды, которые возвращают разные значения для каждого (который вы можете проверить.)

...