Вызвать существующий шаг внутри пользовательского шага с параметром
Я использую Calabash-Android для тестирования моего приложения.
Я создал свой собственный шаг:
Then /^There should be (\d+) customers$/ do |nr_of_customers|
...
end
после этого я создаю еще один шаг, который должен вызвать вышеупомянутый существующий шаг, я знаю, что могу использовать макрос, поэтому я попробовал это:
Given /^I hosted (\d+) customers$/ do |nr_of_customers|
#How to pass the nr_of_customers to the macro???
macro 'There should be nr_of_customers'
...
end
Но как я могу передать параметр nr_of_customers
в макрос, который вызывает другую функцию шага?
1 ответ
Не называйте шаги изнутри, в результате вы получите кучу спагетти-кода. Вместо этого извлеките вспомогательные методы из ваших определений шагов и вызовите их.
например
Then /^There should be (\d+) customers$/ do |nr_of_customers|
expect(customer_count).to be nr_of_customers
end
Given /^I hosted (\d+) customers$/ do |nr_of_customers|
# do some stuff to set up the customers
expect(customer_count).to be nr_of_customers
...
module StepHelpers
def customer_count
....
Кроме того, это плохая практика встраивать заявления в Givens. Givens о настройке состояния, а не о последствиях тестирования, так что на самом деле ваши данные должны быть что-то вроде
Given /^I hosted (\d+) customers$/ do |nr_of_customers|
nr_of_customers.times do
host_customer
end
А также host_customer
должен быть помощником, который вы создали, когда писали сценарии, которые показали, что вы можете принимать клиентов.