Передача переменной из файла .feature в качестве аргумента массива - PullRequest
4 голосов
/ 14 февраля 2012

Я пытаюсь передать параметры из файла .feature (огурец) в вызов метода в файле .rb вот что у меня есть: файл функции

 When I set something to blah

определение шага для вышеуказанного файла объектов:

 When /^I set something to (.+)$/ do |value|
 methodcall(["#{value}"]))
 end

метод в отдельном файле .rb

    def methodcall (a=[],b=[],c=[])
    a.each {|x| 
     do something with x
     }
        b.each {|y| 
     do something with y
     }
        c.each {|z| 
     do something with z
     }
     ...
    end

Работает нормально, если в файле .feature указан только один параметр. Я надеюсь, что это будет работать для одного значения для каждого массива (хотя не пробовал это)

но я хочу написать что-нибудь вроде этого в файле

       And I set something to "blah,blah1,blah2" and somethingelse to "blah4,blah5" and otherthings to "blah6, blah7"

для вышеприведенного, определение шага будет выглядеть как

          When /^I set something to (.+) and somethingelse to (.+) and            
          and otherthings to (.+)$/ do |value, value1, value2|
          methodcall(["#{value}"], ["#{value1}"], ["#{value2}"]))
          end

и через вышеприведенное определение шага получить значения в значении value1, value2 для передачи в аргументах, соответствующих a = [], b = [], c = [], и вызвать метод methodcall () Может кто-нибудь, пожалуйста, помогите .. Спасибо.

1 Ответ

3 голосов
/ 14 февраля 2012

В вашем коде

methodcall(["#{value}"])

Вы берете строковое значение и превращаете его в первый элемент массива, который затем передается в methodcall ().

Я считаю,то, что вы на самом деле хотите сделать, это

methodcall(value.split(','))

Это примет ваше значение, разделит его запятыми и поместит каждое из них как элемент массива.

Для иллюстрации на вашем примерепри условии, что methodcall ():

def methodcall (a=[],b=[],c=[])
    a.each {|x| puts x }
    b.each {|y| puts y }
    c.each {|z| puts z }
end

Тогда

value = "blah,blah1,blah2"
methodcall(["#{value}"])
#=> blah,blah1,blah2

Где, как

value = "blah,blah1,blah2"
methodcall(value.split(,))
#=> blah
#=> blah1
#=> blah2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...