2017-04-20 7 views
0

작은 오이에 대한 문서를 찾는 것이 매우 어려워 보입니다. 따라서 테스터가 적절한 문법을 ​​사용할 수 있도록 단계 정의를 보강하는 방법이 있는지 궁금합니다. 무슨 뜻인지 표시 한 예는 다음과 같습니다 작은 오이 (Gherkin)의 적절한 문법 사용

...Testing... 
Then I see there is 1 item 
...More testing... 
Then I see there are 2 items 

은 물론,이 두 단계는 동일한 코드를 사용합니다. 문제를 제외하고

Then(/^I see there (is|are) (\d+) item(s)?$/) do |item_count| 
    ...code... 
end 

그것이 is/are 및 인수로 선택 복수 s 해석이다 : 나는 거의 작동이 같은 단계 정의를 정의했다. Gherkin에게 알맞은 문법을 허용하는 신호 일 수있는 방법이 있습니까?

답변

2

그룹의 시작 부분에? :를 사용하여 캡쳐하지 않는 것으로 표시하면 오이가 인수로 전달하지 않습니다.

/^I see there (?:is|are) (\d+) item(?:s)?$/ 
1

이 단계에서는 동일한 코드를 사용할 필요가 없습니다. 대신 그들은 같은 코드를 부를 수 있습니다. 이 패턴을 적용하면 잘 발달 된 자연어를 사용하여 수행해야하는 단 한 가지 일을 수행하는 단계에 집중할 수 있습니다. 그래서 ... 지금은 분명히이 예와

module ItemStepHelper 
    def see_items(count:) 
    ... 
end 
World ItemStepHelper 

Then 'I see there is one item' do 
    see_items(count: 1) 
end 

Then 'I see there are \d+ items' do |count| 
    see_items(count: count) 
end 

는 아주 작은 이익을 위해 상당히 많은 상용구를 먹으 렴하지만보다 현실적인 예에 ​​패턴을 적용하면 다음 이점은 정말.에 걷어차 특히 당신이 결코 시작하지 단계 정의에 대해 실제로 복잡한 정규 표현식을 작성해야합니다 (실제로 90 % 또는 그 이상의 단계 정의는 정규 표현식을 사용하지 않습니다).