Add an example that reuses a step definition
This commit is contained in:
5
reuse/features/reusable.feature
Normal file
5
reuse/features/reusable.feature
Normal file
@ -0,0 +1,5 @@
|
||||
Feature:
|
||||
Scenario:
|
||||
Given a person with name
|
||||
And a person named Jack
|
||||
Then the same function is called for two distinct step definitions
|
28
reuse/features/steps/reusable.js
Normal file
28
reuse/features/steps/reusable.js
Normal file
@ -0,0 +1,28 @@
|
||||
import { Before, Given, Then } from 'cucumber'
|
||||
import { expect } from 'chai'
|
||||
|
||||
Before(function () {
|
||||
this.names = []
|
||||
})
|
||||
|
||||
function step (name) {
|
||||
this.names.push(name)
|
||||
}
|
||||
|
||||
function decorator (f, ...args) {
|
||||
if (args.length > 0) {
|
||||
return function () {
|
||||
f.call(this, args[0])
|
||||
}
|
||||
} else {
|
||||
return f
|
||||
}
|
||||
}
|
||||
|
||||
Given('a person with name', decorator(step, 'John'))
|
||||
Given('a person named {word}', decorator(step))
|
||||
|
||||
Then('the same function is called for two distinct step definitions', function () {
|
||||
expect(this.names).to.have.lengthOf(2)
|
||||
expect(this.names).to.include.members(['John', 'Jack'])
|
||||
})
|
Reference in New Issue
Block a user