2016-03-10 8 views
2
cucumber.runtime.AmbiguousStepDefinitionsException: ✽.Given I am an admin user(src/test/resources/features/alerts.feature:9) matches more than one step definition: 
    I am an admin in LoginStepDefinitions.iAmAnAdmin() 
    ^I am an admin user$ in AlertsStepDefinitions.iAmAUser() 

    at cucumber.runtime.RuntimeGlue.stepDefinitionMatch 

Я даю 2 разных определения. Я не знаю, почему эта ошибка возникает.Почему огурец поднять AmbiguousStepDefinitionsException?

ответ

7

Вы получаете эту ошибку, потому что

/I am an admin/ # in LoginStepDefinitions.iAmAnAdmin() 

и

/^I am an admin user$/ # in AlertsStepDefinitions.iAmAUser() 

как матч

"I am an admin user" # at src/test/resources/features/alerts.feature:9 

Первое регулярное выражение соответствует всем, что второе регулярное выражение делает, так что любой шаг, совпадение с вторым регулярным выражением будет совпадать с обоими и вызвать эту ошибку.

Вы можете исправить это, сделав первое регулярное выражение не подмножеством второго регулярного выражения. Одним из вариантов является изменение первого регулярного выражения для

/^I am an admin$/ 

Я вообще считаю, это хорошая идея, чтобы требовать определения шага, чтобы соответствовать весь шаг (т.е. начать с ^ и заканчиваться $), пока я не найду хорошую причину не. Но вам решать, как организовать ваши шаги, чтобы они были однозначными и понятными для читателя.

Смежные вопросы