рдореИрдВ рдПрдХ рдмрдбрд╝реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдФрд░ рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреА рдПрдХ рд╕реНрдХреЗрд▓реЗрдмрд▓ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд╢реЙрдЯ step_definition рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рдерд╛ рддрд╛рдХрд┐ рдореИрдВ рд╡рд┐рднрд┐рдиреНрди рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдЪрд░рдг рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреВрдВред
рдореИрдВ рдЕрдкрдирд╛ рд╡рд░реНрддрдорд╛рди рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реВрдВ:
рдореЗрд░реА рдлрд╝реЛрд▓реНрдбрд░ рд╕рдВрд░рдЪрдирд╛:
/features/sample.feature
/features/example.feature
/features/step_definitions/sample_steps.js
/features/step_definitions/example_steps.js
/features/step_definitions/common/common_steps.js
рдореЗрд░реЗ sample.feature
рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ:
Scenario: Launching Cucumber
Given I have some step definitions
When I check some step definition with parameter "any"
Then I should see all green "sample"
рдореЗрд░реЗ example.feature
рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ:
Scenario: Launching Cucumber
Given I have some step definitions
When I check some step definition with parameter "any"
Then I should see all green "example"
Given
рдФрд░ When
рдЪрд░рдгреЛрдВ рдХреЛ /common/common_steps.js
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
Then
рдЪрд░рдг рдХреЛ sample_steps.js
рдФрд░ example_steps.js
рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЕрд▓рдЧ-рдЕрд▓рдЧред
рдореЗрд░реЗ sample_steps.js рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ:
Then('I should see all green {stringInDoubleQuotes}', (arg) => {
if (arg !== 'sample') {
throw 'I should see all green when the argument is "sample"';
}
return;
});
рдФрд░, рдЕрдВрдд рдореЗрдВ, рдореЗрд░реЗ example_steps.js рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ:
Then('I should see all green {stringInDoubleQuotes}', (arg) => {
if (arg !== 'example') {
throw 'I should see all green when the argument is "example"';
}
return;
});
рдореЗрд░рд╛ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рдпрд╣рд╛рдВ рд╕рднреА рд╣рд░реЗ рд░рдВрдЧ рдХрд╛ рд╣реЛрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:
Multiple step definitions match:
I should see all green {stringInDoubleQuotes} - features\step_definitions\example_steps.js:6
I should see all green {stringInDoubleQuotes} - features\step_definitions\sample_steps.js:6
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдХрдХрдбрд╝реА-рдЬреЗрд╡реАрдПрдо рдореЗрдВ рд╣рдо рдПрдХ glue
рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдФрд░ step_definitions рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдореИрдВ рдвреВрдВрдв рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХрдХрдбрд╝реА-рдЬреЗрдПрд╕ рдореЗрдВред рдЬрд╛рд╡рд╛ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг:
@RunWith(Cucumber.class)
@Cucumber.Options( glue = { "com.app.stepdefinitions.common", "com.app.stepdefinitions.sample" } )
public class SampleFeature{
}
@RunWith(Cucumber.class)
@Cucumber.Options( glue = { "com.app.stepdefinitions.common", "com.app.stepdefinitions.example" } )
public class ExampleFeature{
}
рдореИрдВ рдХрдХрдбрд╝реА-рдЬреЗрд╡реАрдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдХрдбрд╝реА-рдЬреЗрд╡реАрдПрдо рдХреЗ рд╕рдорд╛рди рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
рдореИрдВ рдПрдХ рдмрдбрд╝реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдФрд░ рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреА рдПрдХ рд╕реНрдХреЗрд▓реЗрдмрд▓ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд╢реЙрдЯ step_definition рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рдерд╛ рддрд╛рдХрд┐ рдореИрдВ рд╡рд┐рднрд┐рдиреНрди рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдЪрд░рдг рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреВрдВред
рдмрд╣реБрдд рд╣реА рд░реЛрдЪрдХред рдХрдХрдбрд╝реА-рдЬреЗрдПрд╕ рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдХрдХрдбрд╝реА-рдЬрд╛рд╡рд╛ рдЙрджрд╛рд╣рд░рдг рдХреА рддрд░рд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЬреЛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИ, рд╡рд╣ рдЗрд╕ рддрд░реНрдХ рдХреЛ рдЖрдкрдХреЗ рд╡рд┐рд╢реНрд╡ рд╕реЗрдЯрдЕрдк рдпрд╛ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдмрджрд▓ рд░рд╣рд╛ рд╣реИред рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рдХрджрдо рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдИ рд╡рд┐рд╢реНрд╡ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЕрдкрдиреЗ рд╕рдорд░реНрдерди рдХреЛрдб рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдПрдХ рдПрдХрд▓ рд╡рд┐рд╢реНрд╡ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рд╕рдВрджрд░реНрдн рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдо рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рджреГрд╢реНрдп рдХреА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЪрд▓ рд░рд╣реЗ рдЪрд░рдгреЛрдВ рдореЗрдВ рдирд╣реАрдВ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЖрдк рдЕрдкрдиреЗ рд╕рдВрджрд░реНрдн рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рд╕реЗрд▓реЗрдирд┐рдпрдо рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╛рдЗрдЯрд╡реЙрдЪ-рдХрдХрдбрд╝реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЕрднреА рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдореЗрдВ рдПрдХ рдЙрдкрд╕рд░реНрдЧ рдЬреЛрдбрд╝рдирд╛ рд╣реИ:
Given [comp1] I click on "Open dialog"
рдмрдирд╛рдо
Given [comp2] I click on "Open dialog"
рдпрд╣ рд╣рдореЗрдВ рдЕрд╕реНрдкрд╖реНрдЯ рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдардиреАрдп рдлреАрдЪрд░ рдлрд╛рдЗрд▓реЛрдВ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдХрдХрдбрд╝реА.рдЬреЗрдПрд╕ рд╕реНрд░реЛрдд рдХреЗ рд╕рд╛рде рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рдорд┐рд▓рд╛ред
рдХреНрдпрд╛ рдЗрд╕реЗ рдХреБрдЫ рд╣реБрдХ рдпрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
@leipert рдЖрдк рдХрд┐рд╕ рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдЗрд╕ рддрд░реНрдХ рдХреЛ рджреБрдирд┐рдпрд╛ рдореЗрдВ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдХрдИ рд╡рд┐рд╢реНрд╡ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдлрд┐рд░ рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рдХреЗрд╡рд▓ рдЧреЗрд░рдХрд┐рди рдореИрдЪреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЙрдЪрд┐рдд рд╡рд┐рд╢реНрд╡ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдирд┐рдкрдЯрддреА рд╣реИрдВред рд╣рдо рдХрд┐рд╕ рд╡рд┐рд╢реНрд╡ рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реАрдПрд▓рдЖрдИ рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдлрд┐рд▓рд╣рд╛рд▓ рдпрджрд┐ рдЖрдк рдХрдИ рджреБрдирд┐рдпрд╛/рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЗрд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдореЗрдВ рдЕрдкрдирд╛ рдХреЛрдб рдбрд╛рд▓рдХрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдкреНрд░рддрд┐ рд░рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ ( --require CLI рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред
рдЦреИрд░, "рдХрдХрдбрд╝реА рдкреБрд╕реНрддрдХ" рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЪрд░рдгреЛрдВ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рдЗрд╕ рддрд░реАрдХреЗ рдХреЛ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддреА рд╣реИред рдЪрд░рдг рдбрд┐рдЬрд╝рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрд╕реА рд╡рд╛рдХреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж рд▓рдЧрд╛рддрд╛рд░ рдЕрд░реНрде рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдЪрд░рдгреЛрдВ рдХреЗ рджрд╛рдпрд░реЗ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рднрд╛рд╖рд╛ рдЬрд╛рд▓ рдмрдирд╛рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
cucuber.js рдореЗрдВ рдЕрднреА рддрдХ рдХреЗрд╡рд▓ рдЯреИрдЧ рд╣реА рдЖрдкрдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рдХрд░реАрдм рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╣реБрдХ рд╣реА рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдЯреИрдЧ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИрдВред рдпрджрд┐ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИ, рддреЛ рдЖрдк рдПрдХ рдбреАрдПрд╕рдПрд▓ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╢рд╛рдпрдж рдЪрд░рдг рдкреИрдЯрд░реНрди рдореЗрдВ [рдлреАрдЪрд░ рдирд╛рдо] рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рд▓ред
рдзрдиреНрдпрд╡рд╛рдж, @pinxue ред рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рдЗрд╕реЗ рдирд╣реАрдВ рд╕рдордЭ рд╕рдХрддрд╛:
рдЦреИрд░, "рдХрдХрдбрд╝реА рдкреБрд╕реНрддрдХ" рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЪрд░рдгреЛрдВ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рдЗрд╕ рддрд░реАрдХреЗ рдХреЛ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддреА рд╣реИред
рдПрдХ рд╣реА рдХреНрд░рд┐рдпрд╛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрд░реНрде рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдареАрдХ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЬрд╛рдирдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЖрдВрддрд░рд┐рдХ рдбреАрдПрд╕рдПрд▓ рдкрд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ,
рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред
рдЖрдкрдХреЗ рдЙрддреНрддрд░ @pinxue рдФрд░ @robsonrosa рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рд╕реНрдХреЛрдкреНрдб рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рддрд░реНрдХ рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдореИрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рджреЗрдЦрддрд╛ рд╣реВрдВ:
glue
рдмрдирд╛рдПрдВредjscucumber.js
рдХреЗ рд╕рд╛рде рдлрд╝реАрдЪрд░ рд╕рдорд╛рдирддрд╛рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд╣рдо рд╢рд╛рдпрдж 3 рдХреЗ рд╕рд╛рде рдЬрд╛рдПрдВрдЧреЗ, рдЕрдЧрд░ рдХрдХрдбрд╝реА рдХреЗ рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдХреЛрдкреНрдб рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИрдВ (рд╕рдЬрд╛ рдХрд╛ рдЗрд░рд╛рджрд╛)ред
рдПрдХ рдмрд╛рд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, @robsonrosa рдореБрдЭреЗ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреАред
рдЖрдИрдПрдордУ рд╕реНрдХреЛрдкрд┐рдВрдЧ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬрд░реВрд░реА рд╣реИред рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдврд╝рддрд╛ рд╣реИ, рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЖрдк рд╡рд┐рднрд┐рдиреНрди рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдВрдЧреЗред
рдореЗрд░реА рдХрдВрдкрдиреА рдореЗрдВ, рд╣рдорд╛рд░реЗ рдЙрддреНрдкрд╛рдж рдореЗрдВ рд╕реИрдХрдбрд╝реЛрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ рдФрд░ рдХреНрдпреВрдП рдореЗрдВ 100k рд░реЗрдВрдЬ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рд╣реИрдВред
рдпрджрд┐ рд╣рдо cucumber
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдВрдЧреЗред
рд╣рд╛рдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рджрд╛рдпрд░реЗ рдХреЗ рдмрдЬрд╛рдп рд╕рдВрджрд░реНрдн рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдВрджрд░реНрдн (рдпрд╛ рдиреЛ-рд╕рдВрджрд░реНрдн) рдореЗрдВ рдЖрдкрдХреА рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢, рдпрджрд┐ рд╕рднреА рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╕реНрдЯрдо рдбреАрдПрд╕рдПрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рд╕рдВрджрд░реНрдн рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣ рдмреАрдП рдФрд░ рдХреНрдпреВрдП рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХреЛрдИ рднреА рдХрд╕реНрдЯрдо рдбреАрдПрд╕рдПрд▓ рднреНрд░рдо рдФрд░ рдкреНрд░рддрд┐рд░реЛрдз рдкреИрджрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реИред
рдлрд╝реАрдЪрд░/рдкрд░рд┐рджреГрд╢реНрдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрджрд░реНрдн рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЧреЗрд░рдХрд┐рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рд╣реИред
рдЯреИрдЧ рдФрд░ рдХрд╕реНрдЯрдо рдбреАрдПрд╕рдПрд▓ рдЬреЛрдбрд╝рдирд╛ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрдЬрд╛рдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реАрдорд╛ (рдпрд╛рдиреА рдПрдХ рд╣реИрдХ, рдЖрдИрдПрдордУ) рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк https://github.com/cucumber/cucumber-js/issues/745 рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
Scenario
рдХреЛ defineStep
$ рд╕реЗ рдмрдврд╝рд╛рдиреЗ рдФрд░ рдХреЙрд▓рдмреИрдХ рдореЗрдВ {Given, When, Then}
рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?
рдЕрд░реНрдерд╛рдд:
import {defineSupportCode} from 'cucumber'
defineSupportCode(({ Scenario, Given, When, Then }) => {
Given(...)
When(...)
Then(...)
Scenario('<match scenario description>', ({ Given, When, Then}) => {
Given('<take precedent of non-contexted>', ...)
...
})
})
рдореИрдВ http://fitnesse.org/ рд╕реЗ рдмреАрдбреАрдбреА рд╕реАрдЦрддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдмреАрдбреАрдбреА рдХреЛ рдХрдХрдбрд╝реА рд╕рдореБрджрд╛рдп рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВред
рдкреЗрдЬрд┐рдВрдЧ @richardlawrence
рдпрд╣ рдПрдХ рдРрд╕рд╛ рдХреНрд╖реЗрддреНрд░ рд╣реИ рдЬрд╣рд╛рдВ рдЦреАрд░рд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рдЗрд░реНрдж-рдЧрд┐рд░реНрдж рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЯреАрдореЛрдВ рдХреЛ рдПрдХ рд╕рд░реНрд╡рд╡реНрдпрд╛рдкреА рднрд╛рд╖рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдЬрд╣рд╛рдВ рд╢рдмреНрджреЛрдВ рдФрд░ рд╡рд╛рдХреНрдпрд╛рдВрд╢реЛрдВ рдХрд╛ рдЕрд░реНрде рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рдЪреАрдЬ рд╣реИ рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдЯреЗрдк рдбрд┐рдлреНрд╕ рдЧреНрд▓реЛрдмрд▓ рд░рдЦрдиреЗ рд╕реЗ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдХрд╛рд░рд╛рддреНрдордХ рджрдмрд╛рд╡ рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИред
рджреБрд░реНрд▓рдн рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрд╛рдзреНрдп рд╕рдВрджрд░реНрдн рд╣реЛрддреЗ рд╣реИрдВ (рдбреАрдбреАрдбреА рд╢рд░реНрддреЛрдВ рдореЗрдВ), рдЖрдк рдмрд╕ рдЕрдкрдиреЗ рдХрдХрдбрд╝реА рд╕реВрдЯ рдХреЛ рдЙрд╕реА рд░реЗрдЦрд╛ рдХреЗ рд╕рд╛рде рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕ рдкрд░ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЛ рдЙрд╕ рд╕реАрдорд╛ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдзреНрдп рд╕рдВрджрд░реНрдн рдореЗрдВ рдЪрд░рдг def рд╡реИрд╢реНрд╡рд┐рдХ рд╣реЛрдЧрд╛ред
рдХрдХрдбрд╝реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рд╕реАрдорд╛рдПрдБ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦред рдпрд╣ рдЗрд╕ рдкреГрд╖реНрда рдкрд░ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХреЛрдИ рдорд╣рд╛рди рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ @richardlawrence рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдХрдбрд╝реА рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред http://confessionsofanagilecoach.blogspot.com/2017/05/teaching-cucumbers-about-boundaries.html
рдЬреИрд╕рд╛ рдХрд┐ @leipert рдиреЗ рдХрд╣рд╛, рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдЦрд░рд╛рдм рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ CucumberJVM рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╣рдо рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдЖрдзреА рдХрд╣рд╛рдиреА рд╣реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХрдХрдбрд╝реА (рдЧреИрд░ рдЬреЗрд╡реАрдПрдо) рдПрдХ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╡рд┐рд╢реНрд╡ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкрд░рд┐рджреГрд╢реНрдп рдХреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдореГрддрд┐ рд╕реНрдерд╛рди рд╣реИред рдкрд░рд┐рджреГрд╢реНрдп рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ рдирд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд▓рдЧрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди... рдореБрдЭреЗ CucumberJVM рдореЗрдВ рдЗрд╕ рдкреИрдЯрд░реНрди рдХрд╛ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред рддреЛ рдЕрдЧрд░ рдХрдХрдбрд╝реА рд╣рдореЗрдВ рдХрджрдо рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдлреНрд▓реИрдЯ/рд╡реИрд╢реНрд╡рд┐рдХ рдирд╛рдорд╕реНрдерд╛рди рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреА рд╣реИ, рдФрд░ рд╡рд┐рд╢реНрд╡ рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдХрдбрд╝реАрдЬреЗрд╡реАрдПрдо рдХреЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдерд╛, рддреЛ рдореИрдВ рдереЛрдбрд╝рд╛ рдЦреБрд╢ рд╣реВрдВред рдЗрд╕ рдмрд┐рдВрджреБ рддрдХ, CucumberJVM + World pattern == рдЕрддреНрдпрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╕рдорд╛рдзрд╛рдиред рдЕрдм рддрдХ, рдореИрдВрдиреЗ рдЬреЛ рдХреБрдЫ рднреА рджреЗрдЦрд╛ рд╣реИ, рд╡рд╣ рдореБрдЭреЗ рдпрд╣ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдЪрд░рдг рдлрд╝рдВрдХреНрд╢рди рдХрд┐рд╕ рдлреАрдЪрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдЪрд▓рддреЗ рд╣реИрдВред рдЕрдм рддрдХ рдореИрдВрдиреЗ рдЬреЛ рд╡рд┐рдХрд▓реНрдк рджреЗрдЦреЗ рд╣реИрдВ, рд╡реЗ рдореБрдЭреЗ рд╕рднреА рдкреНрд░рдпрд╛рд╕реЛрдВ/рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рдореВрд▓реНрдпрд╡рд╛рди рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдХрдбрд╝реА рдореЗрдВ рдмреЗрд╣рддрд░ рд╡рд┐рд╢реНрд╡ рд╕рдорд╛рдзрд╛рди рд╣реЛрддреЗ рд╣реИрдВред
рдЕрдВрддрддрдГ, рд╡рд┐рд╢реНрд╡ рдкреИрдЯрд░реНрди рдХреЗ рд╕рд╛рде рднреА рдореИрдВ рдЕрднреА рднреА рдирд╛рдЦреБрд╢ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдлреАрдЪрд░ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЪрд░рдгреЛрдВ рдореЗрдВ рдЬрд╛рдиреЗ рдкрд░ рд╕реВрдЪрдирд╛ рд╣рд╛рдирд┐ рд╣реЛрдЧреАред рдЕрдЧрд░ рдореИрдВ рдмрд╣реБрдд рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ: рдЕрдкрдиреА рдлреАрдЪрд░ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рдЕрдЪреНрдЫреЗ рд╕рдВрдЧрдарди рдореЗрдВ рд░рдЦрдирд╛, рдЕрдЪреНрдЫреЗ рдлреАрдЪрд░ рдлрд╛рдЗрд▓ рдирд╛рдо рдмрдирд╛рдирд╛, рд╕реНрдорд╛рд░реНрдЯ рддрд░реАрдХреЗ рд╕реЗ рдЕрдкрдиреА рд╕реБрд╡рд┐рдзрд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдирд╛, рдЕрдкрдиреЗ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рд╕реНрдорд╛рд░реНрдЯ рддрд░реАрдХреЗ рд╕реЗ рдирд╛рдо рджреЗрдирд╛ - рд╕рднреА рд╕рдВрджрд░реНрдн рдЦрд┐рдбрд╝рдХреА рд╕реЗ рдмрд╛рд╣рд░ рдлреЗрдВрдХ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЧреНрд▓реЛрдмрд▓ рд╕реНрдЯреЗрдк рдбреЗрдлрд┐рдирд┐рд╢рди рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдореИрдВ рдХреЗрд╡рд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рддреНрдпрд╛рдкрди рд╕реЗ рд╕рдВрдмрдВрдз рдХреЛ рджреВрд░ рд░рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкрде рдкрд░ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рднрд▓реЗ рд╣реА рдпрд╣ рдХреБрдЫ рдУрдкрди рд╕реЛрд░реНрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реЛред рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрдврд╝рдиреЗ рдкрд░ рдЗрд╕реЗ рдПрдХ рд╢реЙрдЯ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВ рдЖрдкрдХрд╛ рд▓рдХреНрд╖реНрдп рд╕рдордЭрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред
рдореИрдВ рд╕реНрдкрд╖реНрдЯ .feature рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд░рдЦрдиреЗ рдХреА рднреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╛ рддреЛ рдкреГрд╖реНрдарднреВрдорд┐ рд╡рд┐рд╡рд░рдг рдпрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рджрд┐рдП рдЧрдП рдЪрд░рдг рдХреЗ рд╕рд╛рде рдЬреЛ рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред
рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдЖрдк рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдирдореВрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рджреВрд╕рд░рд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред
рдлрд┐рд░ рдЖрдк рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдЯреЗрдк рдлреЛрд▓реНрдбрд░ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
@robsonrosa @leipert рдореИрдВ рдЖрдкрдХреА рд░рд╛рдп рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реВрдВ
рдореВрд▓ рдкреЛрд╕реНрдЯ рдХреЗ рд▓рдЧрднрдЧ рджреЛ рд╕рд╛рд▓ рдмрд╛рдж ...
рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЗрд╕рд╕реЗ рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рдорд┐рд▓реА? рдХреЛрдИ рдЙрдкрд╛рдп?
@ cristianmercado19 рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдирд╣реАрдВред рдореИрдВ рдЕрдм рдХрдХрдбрд╝реА рдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
Ups... рдореБрдЭреЗ рдлреАрдЪрд░ рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦрдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдкрд╕рдВрдж рд╣реИ рдЬреЛ рд╕реНрдЯреЗрдк рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реИред
рдореИрдВрдиреЗ рдЙрд╕реА рд▓рдХреНрд╖реНрдп рдХреЛ _рдореЛрдЪрд╛_ рдХреЗ рд╕рд╛рде рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рд╕реЗ рдЦреБрд╢ рдирд╣реАрдВ рд╣реВрдВред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬреЛ рдореЗрд░реЗ рд▓рдХреНрд╖реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдЦреБрд╢реА рд╣реЛрдЧреАред
рдЖрдкрдХреА рдорджрдж @leipert рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВред
рдЗрд╕ рдереНрд░реЗрдб рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЙрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реБрдИ рд╣реИред рдХреГрдкрдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рдмрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЖрдИрдПрдордУ рд╕реНрдХреЛрдкрд┐рдВрдЧ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬрд░реВрд░реА рд╣реИред рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдврд╝рддрд╛ рд╣реИ, рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЖрдк рд╡рд┐рднрд┐рдиреНрди рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдВрдЧреЗред
рдореЗрд░реА рдХрдВрдкрдиреА рдореЗрдВ, рд╣рдорд╛рд░реЗ рдЙрддреНрдкрд╛рдж рдореЗрдВ рд╕реИрдХрдбрд╝реЛрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ рдФрд░ рдХреНрдпреВрдП рдореЗрдВ 100k рд░реЗрдВрдЬ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рд╣реИрдВред
рдпрджрд┐ рд╣рдо
cucumber
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдВрдЧреЗредрд╣рд╛рдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рджрд╛рдпрд░реЗ рдХреЗ рдмрдЬрд╛рдп рд╕рдВрджрд░реНрдн рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдВрджрд░реНрдн (рдпрд╛ рдиреЛ-рд╕рдВрджрд░реНрдн) рдореЗрдВ рдЖрдкрдХреА рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢, рдпрджрд┐ рд╕рднреА рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╕реНрдЯрдо рдбреАрдПрд╕рдПрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рд╕рдВрджрд░реНрдн рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣ рдмреАрдП рдФрд░ рдХреНрдпреВрдП рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХреЛрдИ рднреА рдХрд╕реНрдЯрдо рдбреАрдПрд╕рдПрд▓ рднреНрд░рдо рдФрд░ рдкреНрд░рддрд┐рд░реЛрдз рдкреИрджрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реИред
рдлрд╝реАрдЪрд░/рдкрд░рд┐рджреГрд╢реНрдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрджрд░реНрдн рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЧреЗрд░рдХрд┐рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рд╣реИред
рдЯреИрдЧ рдФрд░ рдХрд╕реНрдЯрдо рдбреАрдПрд╕рдПрд▓ рдЬреЛрдбрд╝рдирд╛ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрдЬрд╛рдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реАрдорд╛ (рдпрд╛рдиреА рдПрдХ рд╣реИрдХ, рдЖрдИрдПрдордУ) рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк https://github.com/cucumber/cucumber-js/issues/745 рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
Scenario
рдХреЛdefineStep
$ рд╕реЗ рдмрдврд╝рд╛рдиреЗ рдФрд░ рдХреЙрд▓рдмреИрдХ рдореЗрдВ{Given, When, Then}
рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?рдЕрд░реНрдерд╛рдд: