私が取り組んでいるプロジェクトのエンド ツー エンド テスト用に、typescript に基づいて Cypress と CucumberJs をセットアップしました。
たまたま 2 つの異なる機能ファイルがbus.feature
ありcar.feature
、それらのステップ定義ファイルbus.spec.ts
とcar.spec.ts
私は2つの異なるステップ定義を持っています:
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'
、実装がわずかに異なります (たとえば、 case can't visit
)。
テストを実行すると、bus
完全に完全に実行されます。
どちらのcar
テストでも認識文字列が同じであるため、Cypress + CucumberJs スイートは最初の定義のみを検出し、適切なbus
定義を無視するため、問題がcar
あります。
理由はわかりました。最初のものが検出され、それだけです。質問は、異なるファイルのコンテキストを分離する方法があるので、異なる実装で同じ定義名を持つこともできるのでしょうか?
前もって感謝します