2015-03-12 2 views
2

Привет Я пытаюсь написать выражение набора требований в синтаксисе окультуривания, но для этого требуется много повторений. Я видел here, что я могу использовать заполнители, которые были бы идеальны для моей задачи, однако некоторые данные в моем «Дано» и в моих тогдашних коллекциях. Как я собираюсь представить коллекции в примерах?Заполнитель Array в синтаксисе Gherkin

Given a collection of spaces <spaces> 
    And a <request> to allocate space 
When I allocate the request 
Then I should have <allocated_spaces> 

Examples: 
| spaces | request | allocated_spaces | 
| ?  | ?  | ?    | 

ответ

0

Вы можете использовать Data Tables. Раньше я никогда не пытался иметь параметр в таблице данных, но теоретически он должен работать.

Given a collection of spaces: 
| space1  | 
| space2  | 
| <space_param> | 
And a <request> to allocate space 
When I allocate the request 
Then I should have <allocated_spaces> 

Examples: 
| space_param | request | allocated_spaces | 
| ?   | ?  | ?    | 

Данная таблица данных будет экземпляром Cucumber::Ast::Table, проверка на rubydoc для его API.

+0

благодарит @hidro, но это не совсем решает проблему –

3

Немного Hacky, но вы можете разграничить строку:

Given a collection of spaces <spaces> 
    And a <request> to allocate space 
When I allocate the request 
Then I should have <allocated_spaces> 

Examples: 
| spaces | request | allocated_spaces | 
| a,b,c | ?  | ?    | 

Given(/^a collection of spaces (.*?)$/) do |arg1| 
    collection = arg1.split(",") #=> ["a","b","c"] 
end 
0

Вот пример, опять-таки с помощью раскола, но без регулярного выражения:

Scenario Outline: To ensure proper allocation 
    Given a collection of spaces <spaces> 
     And a <request> to allocate space 
    When I allocate the request 
    Then I should have <allocated_spaces> 

    Examples: 
     | spaces  | request | allocated_spaces | 
     | "s1, s2, s3" | 2  | 2    | 
     | "s1, s2, s3" | 3  | 3    | 
     | "s1, s2"  | 3  | 2    | 

Я использую огурец-JS, так что это какой код может выглядеть так:

Given('a collection of spaces {stringInDoubleQuotes}', function (spaces, callback) { 
    // Write code here that turns the phrase above into concrete actions 
    this.availableSpaces = spaces.split(", "); 
    callback(); 
}); 

Given('a {int} to allocate space', function (numToAllocate, callback) { 
    this.numToAllocate = numToAllocate; 
    // Write code here that turns the phrase above into concrete actions 
    callback(); 
}); 

When('I allocate the request', function (callback) { 
    console.log("availableSpaces:", this.availableSpaces); 
    console.log("numToAllocate:", this.numToAllocate); 
    // Write code here that turns the phrase above into concrete actions 
    callback(); 
}); 

Then('I should have {int}', function (int, callback) { 
    // Write code here that turns the phrase above into concrete actions 
    callback(null, 'pending'); 
}); 
Смежные вопросы