Я практикуюсь в написании некоторых модульных тестов BDD с использованием cucumber.js. Когда я пытаюсь использовать оператор «И». Ошибка показывает, что

TypeError: Add is not a function

Вот мой код

.характерная черта

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)
  })
})

И сообщение об ошибке, как показано ниже:

TypeError: Add is not a function
    at ...  // my file location
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! test_cucumber@1.0.0 cucumber: `cucumber.js ./test/e2e/Features -r ./test/e2e/StepDefinition`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the test_cucumber@1.0.0 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

Интересно, не так ли я написал. Спасибо!

1
JeffChen 29 Дек 2017 в 12:16

1 ответ

Лучший ответ

And и But являются синтаксическим сахаром для файла функций, другими словами, они являются псевдонимами для Given, When и Then.

Когда вы определяете шаг, вы должны использовать Given, When и Then, чтобы описать, чего пытается достичь шаг (предварительное условие, действие или результат), а затем, если у вас есть несколько предварительных условий, действий или результатов, используйте только And или But в своем файле функций.

4
KyleFairns 18 Май 2018 в 23:42