รับรายการทั้งหมดที่อยู่ในเครื่องหมายคำพูดใน Cucumber Step Definition

ฉันมีสตริง: I attach "dog.png", "cat.png", and "alphabet.doc"

นี่คือสิ่งที่ฉันต้องการจับคู่:

1. dog.png
2. cat.png
3. alphabet.doc

ฉันสามารถทำได้โดยการทำ "([^"]*)" อย่างไรก็ตาม สตริงต้องขึ้นต้นด้วย 'ฉันแนบ'

นี่คือกฎปัจจุบันที่ฉันมีในคำจำกัดความขั้นตอน: /^I attach "([^"]*)"$/ แต่วิธีนี้ใช้ไม่ได้

นี่สำหรับแตงกวา/เกอร์คิน ฉันคิดบางอย่างได้โดยใช้ scan แต่ฉันไม่คิดว่าคุณสามารถใช้มันกับคิวเค/เกอร์คินได้ใช่ไหม

มีข้อเสนอแนะเกี่ยวกับวิธีการทำเช่นนี้หรือไม่?

ขอบคุณ


person jreptak    schedule 08.08.2013    source แหล่งที่มา
comment
คุณไม่คิดว่าคุณสามารถใช้ scan ได้ใช่ไหม   -  person pguardiario    schedule 08.08.2013
comment
@pguardiario กฎเหล่านี้มีไว้สำหรับคำจำกัดความขั้นตอน   -  person jreptak    schedule 08.08.2013


คำตอบ (2)


หากคุณต้องการจับอินพุตจำนวนตัวแปรในขั้นตอนเดียว ฉันคิดว่าตัวเลือกที่ดีที่สุดคือการใช้ scan แม้ว่าคุณจะไม่สามารถใช้การสแกนในชื่อขั้นตอนได้โดยตรง แต่คุณสามารถบันทึกรายการไฟล์ทั้งหมด จากนั้นแยกวิเคราะห์ผลลัพธ์ที่บันทึกได้

ลองใช้คำจำกัดความขั้นตอนต่อไปนี้:

Given /^I attach (.*)$/ do |file_list|
  files = file_list.scan(/"(.+?)"/).flatten
  #=> ["dog.png", "cat.png", "alphabet.doc"]
end

สิ่งนี้จะสร้างอาร์เรย์ของไฟล์ที่จะแนบ สามารถรองรับไฟล์ตั้งแต่ 1 ถึงอนันต์

person Justin Ko    schedule 10.08.2013
comment
นี่เป็นสิ่งที่ดีมาก ฉันสงสัยว่าจะใช้การสแกนในบริบทนี้อย่างไร ฉันมีความต้องการ OP ที่คล้ายกันและสิ่งนี้ช่วยได้ +1 - person Richard Jordan; 12.08.2013

ดูเหมือนว่าจะเป็นสถานที่ที่ดีที่จะใช้ #And นามแฝง

Given I attach dog.png
  And I attach cat.png
  And I attach alphabet.doc
...

หรือคุณสามารถใช้ตารางข้อมูลสำหรับอาร์กิวเมนต์หลายบรรทัดที่ง่ายดาย

person Travis Kaufman    schedule 08.08.2013