Вызвать существующий шаг внутри пользовательского шага с параметром

Я использую 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 должен быть помощником, который вы создали, когда писали сценарии, которые показали, что вы можете принимать клиентов.

Другие вопросы по тегам