Как правильно проверить, что я нахожусь на определенном экране при тестировании Calabash?

Я хочу утверждать, что я нахожусь на определенном экране во время тестов, и если это не так, то я должен потерпеть неудачу. Каков рекомендуемый способ сделать это? Например, если у меня есть такой тест:

Given that I am on the Login screen
When I press "Sign Up"
Then I should be on the Sign up screen

Я написал объектные модели страниц для обоих задействованных экранов, и для каждого из них определен метод типажей.

Я посмотрел, и есть образец TaskyPro (https://github.com/xamarin/mobile-samples/tree/master/TaskyPro-Calabash/features/step_definitions), в котором определяется метод «assert_screen». Я пытался поместить его в свой проект, но он не работает, так как @screen всегда равен нулю. У меня нет Xamarin, поэтому я не могу собрать их проект и протестировать его.


person s73v3r    schedule 30.09.2014    source источник
comment
Не могли бы вы вставить сюда часть модели страницы, особенно часть о том, как вы устанавливаете значение @screen.   -  person Lasse    schedule 07.10.2014


Ответы (1)


Сначала вам нужно назначить @screen.

Если ваши экранные объекты присущи Calabash::IBase (iOS) или Calabash::ABase (Android), вы можете использовать встроенный метод await. Вам просто нужно установить trait или title для экрана.

Хорошим примером является «Пример кроссплатформенности Calabash»: https://github.com/calabash/x-platform-example Здесь вы можете увидеть примеры того, как назначать объекты экрана/страницы, как создавать объекты экрана/страницы и как проверять, виден ли экран.

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

Я бы порекомендовал вам также использовать метод transition для объектов экрана/страницы для перехода между экранами.

person Morten Bjerg Gregersen    schedule 07.10.2014
comment
До этого поста я никогда не слышал о методе перехода. Я сделал быстрый поиск в Google, и единственное, что я нашел, это исходный список. Ни в одном из их документов ничего нет. Есть ли еще много подобных методов, о которых мне следует знать? - person s73v3r; 07.10.2014
comment
Поскольку я ответил на этот вопрос, мы изменили способ использования экранов/страниц. У нас есть несколько шагов, которые используются из разных мест, поэтому мы не можем предположить, что @screen всегда является правильным экраном в начале шага. Поэтому в начале шага мы назначаем локальную переменную вновь созданному экранному объекту. - person Morten Bjerg Gregersen; 07.09.2016