Всем доброго дня! Написал приложение под Android (прототип указан ниже по ссылке).
Изучил все тулы / мануалы по составлению calabash тестового сценария, также прочитал книгу "The Cucumber book". Не понимаю одного, например хотя бы, как реализовать step defenitions на ruby, чтобы сделать первоначальный ввод номера кредитной карты. Допустим, я могу написать в шаге сценария номер карты,
Background:
Given I press "CreditCardEntryDemo"
And I press "form_with_zip"
Scenario: Credit card number identity
When I enter "4242 4242 4242 4242" into field with id "form_with_zip"
And I check of the corrrect number of digits for the credit card
Then the form should be redisplayed with CVV and MM/YY
And the form should be activate a button called "Prev"
и дальше в step defenition написать регулярное выражение по этому номеру, после чего сделать вызов query("*") для просмотра идентификатора объектов в моем apk. Вопросы:1) Как связать идентификатор моего поля CustomView c данными, которые пользователь вводит в номере карты?
После запуска тестового сценария и получения подсказки, как можно реализовать шаги в сценарии
When(/^I enter "([^"]*)" into field with id "([^"]*)"$/) do |arg1, arg2|
pending # Write code here that turns the phrase above into concrete actions
end
When(/^I check of the corrrect number of digits for the credit card$/) do
pending # Write code here that turns the phrase above into concrete actions
end
Then(/^the form should be redisplayed with CVV and MM\/YY$/) do
pending # Write code here that turns the phrase above into concrete actions
end
Then(/^the form should be activate a button called "([^"]*)"$/) do |arg1|
pending # Write code here that turns the phrase above into concrete actions
end
хотелось бы написать реализацию данных подсказок, например как что то в этом роде:
#Ввод номера карты в соответствии заданными регулярными выражениями
When(/^I enter "(^4[0-9]{15}?+^5[1-5][0-9]{14}$+^3[47][0-9]{13}$+^6(?:011|5[0-9]{2})[0-9]{12}$+)" into field with id "([^"]*)"$/) do |number, idField|
# TODO something
end
#Проверку правильности набранного номера, думаю, можно опустить из-за
#регулярных выражений предыдущего шага. НО надо еще как то вернуть
#сами данные в поле CustomView с id form_with_zip.
When(/^I check of the corrrect number of digits for the credit card$/) do
pending # Write code here that turns the phrase above into concrete actions
end
#После ввода номера карты, должно появиться в этом поле CustomView невидимый
#CVV и MM/YY
Then(/^the form should be redisplayed with CVV and MM\/YY$/) do
pending # Write code here that turns the phrase above into concrete actions
end
#Должна стать активной кнопка "Prev"
Then(/^the form should be activate a button called "([^"]*)"$/) do |arg1|
pending # Write code here that turns the phrase above into concrete actions
end
2) Как сделать абстрактный ввод данных в тесте сценария, если это возможно?То есть в тестовом сценарии (см. выше) написан номер карты "4242 4242 4242 4242". Можно ли проверить правильность работы приложения на ввод других каких - то номеров без собственноручного ввода?
3) И как вернуть данные номера в поле CustomView, куда в приложении пользователь вводит данные его банковской карты?
Выше в комментариях подсказок step definitions уже упоминалось про возврат правильно набранного номера банковской карты в поле CustomView с id form_with_zip (описание этого объекта представлено выше). Так как же это сделать? :)
4) Чуть не забыл, как в реализацию step definitions добавить проверку на смену картинок в поле ввода?
При правильном наборе номера карты, в этом поле ввода должна смениться картинка неопределенной карты на картинку карты, которая соответствует своему регулярному выражению. Например, номер "4242 4242 4242 4242" - это Visa, то есть первая картинка сменится на картинку карты Visa.
Ссылка на прототип приложения:http://www.lukew.com/ff/entry.asp?1667
Ответ
Если всегда один и тот же номер:
When(/^I enter credit card number$/) do
touch("* id:'input_id'") #id элемента
wait_for_keyboard
keyboard_enter_text('1234') # любой номер (будет захардкожен)
hide_soft_keyboard
end
Если номер меняется, можно задать переменную:
When(/^I enter credit card number$/) do
@code='1234'
touch("* id:'input_id'") #id элемента
wait_for_keyboard
keyboard_enter_text(@code) #переменная code
hide_soft_keyboard
end
Если хотите прописать в фиче номер:
В фиче будет выглядеть так:
When I enter credit card number '1234'
When(/^I enter credit card number "([^"]*)"$/) do |number|
touch("* id:'input_id'") #id элемента
wait_for_keyboard
keyboard_enter_text(number)
hide_soft_keyboard
end
Комментариев нет:
Отправить комментарий