Um ein Szenario zu überspringen, habe ich in V6 einen Hook vor jedem Szenario verwendet
Before({ tags: '<strong i="6">@ignore</strong>' }, async function () {
return 'skipped';
});
Derselbe Code wird in v7 nicht mehr mit Typoskript kompiliert:
error TS2769: No overload matches this call.
Overload 1 of 3, '(tags: string, code: TestCaseHookFunction): void', gave the following error.
Argument of type '{ tags: string; }' is not assignable to parameter of type 'string'.
Overload 2 of 3, '(options: IDefineTestCaseHookOptions, code: TestCaseHookFunction): void', gave the following error.
Argument of type '(this: CustomWorld) => Promise<string>' is not assignable to parameter of type 'TestCaseHookFunction'.
Type '(this: CustomWorld) => Promise<string>' is not assignable to type 'TestCaseHookFunctionWithoutParameter'.
Type 'Promise<string>' is not assignable to type 'void | Promise<void>'.
Type 'Promise<string>' is not assignable to type 'Promise<void>'.
Was ist der richtige Weg, um ein Szenario in v7 zu überspringen?
Vielen Dank
Ich bin gerade auf genau das gleiche Problem gestoßen, als ich Serenity/JS Unterstützung für Cucumber v7 hinzugefügt habe.
Mir scheint, dass es eher ein Problem mit Typdefinitionen als mit der eigentlichen Funktionalität ist, die genau so funktioniert wie in v6.
@charlierudolph / @davidjgoss , würde es Ihnen etwas ausmachen zu überprüfen, ob meine unten stehenden Überlegungen richtig sind?
In support_code_library_builder/types.ts
gibt es folgende Definitionen:
export type TestCaseHookFunctionWithoutParameter = () => void | Promise<void>
export type TestCaseHookFunctionWithParameter = (
arg: ITestCaseHookParameter
) => void | Promise<void>
Da Gurke es zulässt, dass der Hook void
, ein string
von 'skipped'
oder 'pending'
oder ein Promise
mit einem dieser Ergebnisse zurückgibt , könnte eine verbesserte Implementierung ungefähr so aussehen:
export type TestCaseHookFunctionResult = 'skipped' | 'pending' | void
export type TestCaseHookFunctionWithoutParameter = () => TestCaseHookFunctionResult | Promise<TestCaseHookFunctionResult>
export type TestCaseHookFunctionWithParameter = (
arg: ITestCaseHookParameter
) => TestCaseHookFunctionResult | Promise<TestCaseHookFunctionResult>
Bis diese oder eine ähnliche Änderung eingeführt wird, besteht eine Problemumgehung für dieses Problem darin, den Test-Hook wie folgt anzugeben:
import { Before } from '@cucumber/cucumber';
Before({ tags: '<strong i="25">@ignore</strong>' }, function () {
return 'skipped' as any;
});
Hallo @jan-molak, vielen Dank für dein Feedback, dein Workaround funktioniert einwandfrei!
Danke für den Workaround @jan-molak - ich schaue mir das gleich mal an.
Hilfreichster Kommentar
Ich bin gerade auf genau das gleiche Problem gestoßen, als ich Serenity/JS Unterstützung für Cucumber v7 hinzugefügt habe.
Mir scheint, dass es eher ein Problem mit Typdefinitionen als mit der eigentlichen Funktionalität ist, die genau so funktioniert wie in v6.
@charlierudolph / @davidjgoss , würde es Ihnen etwas ausmachen zu überprüfen, ob meine unten stehenden Überlegungen richtig sind?
In
support_code_library_builder/types.ts
gibt es folgende Definitionen:Da Gurke es zulässt, dass der Hook
void
, einstring
von'skipped'
oder'pending'
oder einPromise
mit einem dieser Ergebnisse zurückgibt , könnte eine verbesserte Implementierung ungefähr so aussehen:Bis diese oder eine ähnliche Änderung eingeführt wird, besteht eine Problemumgehung für dieses Problem darin, den Test-Hook wie folgt anzugeben: