#cucumber #cypress #definition #cucumberjs #cypress-cucumber-preprocessor
Вопрос:
У меня есть настройка Cypress и CucumberJS на основе машинописного текста для сквозных тестов в проекте, над которым я работаю.
Так получилось, что у него есть два разных файла функций bus.feature
и car.feature
с их файлами определения шагов bus.spec.ts
и car.spec.ts
У меня есть два разных определения шага:
Then(
'I {string} the Destination page', (operation: operation) => {
cy.location().should(location => {
switch (operation) {
case 'visit':
expect(location.pathname).to.eq('/e2e/destination')
break
case `can't visit`:
expect(location.pathname).to.eq('/e2e/bus')
break
}
})
}
)
и
Then(
'I {string} the Destination page', (operation: operation) => {
cy.location().should(location => {
switch (operation) {
case 'visit':
expect(location.pathname).to.eq('/e2e/destination')
break
case `can't visit`:
expect(location.pathname).to.eq('/e2e/car')
break
}
})
}
)
идентичны по своей строке 'I {string} the Destination page'
распознавания, но немного отличаются по реализации (например, случай can't visit
).
Когда я запускаю тесты, bus
один из них полностью выполняется идеально.
У car
одного есть проблема, потому что, будучи строкой распознавания, одинаковой для обоих тестов, набор Cypress CucumberJS обнаруживает только первое bus
определение, игнорируя car
и правильное.
Я понимаю, почему, обнаруживается первый, и все. Вопрос в том, есть ли способ разделить контексты разных файлов, чтобы иметь возможность иметь одно и то же имя определения с разной реализацией?
Заранее спасибо
Ответ №1:
Почему нет
'I {string} the Destination page for {string}', (operation: operation, transportMode) => {
...
expect(location.pathname).to.eq(`/e2e/car${transportMode}`)
или это нарушает соответствие между функцией и шагом?
Комментарии:
1. Ах, это могло бы сработать. Но это крючок. Может быть, концептуально я пытаюсь добиться чего-то неправильного. Но мне было интересно, существуют ли другие подходы, более ориентированные на конфигурацию.