I am practicing in writing some unit test by BDD use cucmber.js. When I try to use 'And' statement. The error shows that
TypeError: And is not a function
Here is my code
.feature
Feature: dataTable
Scenario Outline: <a> + <b> + <c> = <answer>
Given I had number <a>
And I add another number <b>
When I add with <c>
Then I got answer <answer>
Examples:
|a|b|c|answer|
|1|2|3|6|
|10|15|25|50|
.stepDefinition
defineSupportCode(function({Given,When,Then,And}){
let ans = 0;
Given('I had number {int}', function(input){
ans = input
})
And('I add another number {int}',function(input){
ans += input
})
When('I add with {int}',function(input){
ans += input
})
Then('I got answer {int}', function(input){
assert.equal(ans,input)
})
})
and the error message is like below:
TypeError: Add is not a function
at ... // my file location
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] cucumber: `cucumber.js ./test/e2e/Features -r ./test/e2e/StepDefinition`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] cucumber script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/lab1321_mac_air/.npm/_logs/2018-01-04T08_15_28_568Z-debug.log
I wonder if I wrote something wrong. Thanks!
And
and But
are syntactical sugar for the feature file - in other words, they are aliases for Given
, When
and Then
.
When you are defining the step, you should use Given
, When
and Then
to describe what the step is trying to achieve (a prerequisite, an action or an outcome), and then if you have more than one prerequisite, action or outcome, use And
or But
in your feature file only.