Я только изучаю Cucumber и замечаю, что если две полностью отдельные функции имеют два шага, которые случайно сформулированы одинаково, Cucumber предлагает для них только одно определение шага. Означает ли это, что определения шагов являются глобальными и предназначены для совместного использования?
Пример
Предположим, группа бизнес-аналитиков пишет спецификации для финансовой фирмы, в которой есть банковское подразделение и брокерское подразделение. Далее предположим, что два разных человека пишут функции для своих подразделений для расчета комиссий за транзакции.
Банкир пишет:
Feature: Transaction Fees
Scenario: Cutomer withdraws cash from an out-of-netwrok ATM
Given that a customer has withdrawn cash from an out-of-netwrok ATM
When I calculate the transaction fees
Then I must include an out-of-netwrok ATM charge
Брокерский парень пишет
Feature: Transaction Fees
Scenario: Cutomer places a limit order
Given that a customer has placed a limit order
When I calculate the transaction fees
Then I must include our standard limit-order charge
Обратите внимание, что предложение When одинаково для обоих сценариев. Хуже того, оба парня поместили этот сценарий в файл с именем transaction-fee.feature (конечно, в разных каталогах).
Cucumber дает следующие рекомендации по определению шагов:
You can implement step definitions for undefined steps with these snippets:
this.Given(/^that a customer has withdrawn cash from an out\-of\-netwrok ATM$/, function (callback) {
// Write code here that turns the phrase above into concrete actions
callback.pending();
});
this.When(/^I calculate the transaction fees$/, function (callback) {
// Write code here that turns the phrase above into concrete actions
callback.pending();
});
this.Then(/^I must include an out\-of\-netwrok ATM charge$/, function (callback) {
// Write code here that turns the phrase above into concrete actions
callback.pending();
});
this.Given(/^that a customer has placed a limit order$/, function (callback) {
// Write code here that turns the phrase above into concrete actions
callback.pending();
});
this.Then(/^I must include our standard limit\-order charge$/, function (callback) {
// Write code here that turns the phrase above into concrete actions
callback.pending();
});
Обратите внимание, что предложение when предлагается только один раз.
- Означает ли это, что должно быть только одно определение шага, которое нужно ввести только в один из двух файлов определения шага?
- Связывает ли огурец файлы функций с одноименными файлами step_definition? Другими словами, связывает ли он transaction-fee.feature с transaction-fee.steps.js? Если все определения шагов являются глобальными, то я могу ошибочно предположить, что настройка файла / каталога предназначена только для организации и ничего не значит в отношении среды выполнения.
Заранее благодарим за ваше время и пояснения.