Я пишу тесты калабаша, используя Ruby 2.3.0
, и мне не удается вызвать методы огурца из модуля.Вызов методов огурца из модуля
module A
module_function
def visible
wait_for_elements_exist("Some element query")
end
end
И:
Class B
include A
end
Когда я называю B.visible
или определить это в B
:
def visible
A::visible
end
И позвони B.visible
, я получаю NoMethodError
указанием wait_for_elements_exist
в модуле А.
Я пробовал require 'calabash-cucumber/cucumber'
в модуле и include Calabash::Cucumber
в модуле. Это не сработало.
Я могу получить доступ ко всем методам огурца из других классов в моем проекте, и я потребовал огурец в моем env.rb
, чтобы библиотека была загружена. Я хотел бы знать, как получить доступ к библиотечным функциям из модуля или как правильно включить в мои модули.
EDIT
Я попытался include Calabash::Cucumber::WaitHelpers
И include Calabash::Cucumber::Operations
Не работает. Я заменил include с расширением, и теперь я могу получить доступ к методам, но это не решит мою проблему.
Что мне нужно
AndroidModule < Calabash::Android::Operations
IosModule < Calabash::Cucumber::Operations
В этих модулях я определяю методы, которые отличаются между платформами.
Тогда для разных экранов есть ScreenModule
, где я определяю методы, специфичные для экрана, и на основе запуска, который я запускаю, мне нужно ScreenModule
, чтобы включить один из модулей платформы.
Мне нужен доступ к ::Operations
от ScreenModule
, но он не найдет ни одного из этих методов.
Я не могу понять, почему я не могу использовать wait_for_elements_exist
, даже если я включил ::Operations
Moudle
Что я пытаюсь создать здесь, представляет собой модуль для методов страницы объектов, которые я могу использовать для Android и прошивки страниц, поэтому я могу делиться определениями шагов между обеими платформами. Например, шаг от меня будет: 'Тогда (/^я вижу экрана входа в систему $ /) сделать ... создать объект Логин страницу ... login_screen.visible login_screen.do_stuff' И я хотите создавать модули для таких методов, как 'visible' и' do_stuff', поэтому я могу включить модули в классы классов iOS и Android. Я получил эту работу, расширив 'Calabash :: Cucumber :: Operations' в модуле A, чтобы получить доступ к операциям. – Krumons