在 CucumberJs & Cypress 中是否可以使上下文独立并允许具有相同描述的步骤?
Is it possible in CucumberJs & Cypress to make contexts independent and allow steps with same description?
我有一个基于打字稿的 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
和正确的。
我明白为什么,第一个被检测到,就是这样。
问题是,有没有一种方法可以分离不同文件的上下文,从而能够在不同的实现中使用相同的定义名称?
提前致谢
为什么不
'I {string} the Destination page for {string}', (operation: operation, transportMode) => {
...
expect(location.pathname).to.eq(`/e2e/car${transportMode}`)
或者这会扰乱特征和步骤之间的匹配吗?
我有一个基于打字稿的 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
和正确的。
我明白为什么,第一个被检测到,就是这样。 问题是,有没有一种方法可以分离不同文件的上下文,从而能够在不同的实现中使用相同的定义名称?
提前致谢
为什么不
'I {string} the Destination page for {string}', (operation: operation, transportMode) => {
...
expect(location.pathname).to.eq(`/e2e/car${transportMode}`)
或者这会扰乱特征和步骤之间的匹配吗?