En V6, pour sauter un scénario, j'ai utilisé un crochet Avant chaque scénario
Before({ tags: '<strong i="6">@ignore</strong>' }, async function () {
return 'skipped';
});
Ce même code ne se compile plus en v7 avec dactylographié :
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>'.
Quelle est la bonne façon de sauter un scénario dans la v7 ?
Merci
Je viens de rencontrer exactement le même problème lors de l'ajout de la prise en charge de Cucumber v7 à Serenity/JS .
Il me semble que c'est un problème avec les définitions de type plutôt que la fonctionnalité réelle, qui fonctionne exactement de la même manière que dans la v6.
@charlierudolph / @davidjgoss , voudriez-vous vérifier si ma réflexion ci-dessous est correcte ?
Dans support_code_library_builder/types.ts
il y a les définitions suivantes :
export type TestCaseHookFunctionWithoutParameter = () => void | Promise<void>
export type TestCaseHookFunctionWithParameter = (
arg: ITestCaseHookParameter
) => void | Promise<void>
Puisque le concombre permet au crochet de retourner void
, un string
de 'skipped'
ou 'pending'
, ou un Promise
avec l'un de ces résultats , une implémentation améliorée pourrait ressembler plus ou moins à ceci :
export type TestCaseHookFunctionResult = 'skipped' | 'pending' | void
export type TestCaseHookFunctionWithoutParameter = () => TestCaseHookFunctionResult | Promise<TestCaseHookFunctionResult>
export type TestCaseHookFunctionWithParameter = (
arg: ITestCaseHookParameter
) => TestCaseHookFunctionResult | Promise<TestCaseHookFunctionResult>
Jusqu'à ce que cette modification ou une modification similaire soit introduite, une solution de contournement pour ce problème consisterait à spécifier le hook de test comme suit :
import { Before } from '@cucumber/cucumber';
Before({ tags: '<strong i="25">@ignore</strong>' }, function () {
return 'skipped' as any;
});
Salut @jan-molak , merci beaucoup pour votre retour, votre solution de contournement fonctionne parfaitement !
Merci pour la solution de contournement @jan-molak - je vais jeter un œil à celui-ci sous peu.
Commentaire le plus utile
Je viens de rencontrer exactement le même problème lors de l'ajout de la prise en charge de Cucumber v7 à Serenity/JS .
Il me semble que c'est un problème avec les définitions de type plutôt que la fonctionnalité réelle, qui fonctionne exactement de la même manière que dans la v6.
@charlierudolph / @davidjgoss , voudriez-vous vérifier si ma réflexion ci-dessous est correcte ?
Dans
support_code_library_builder/types.ts
il y a les définitions suivantes :Puisque le concombre permet au crochet de retourner
void
, unstring
de'skipped'
ou'pending'
, ou unPromise
avec l'un de ces résultats , une implémentation améliorée pourrait ressembler plus ou moins à ceci :Jusqu'à ce que cette modification ou une modification similaire soit introduite, une solution de contournement pour ce problème consisterait à spécifier le hook de test comme suit :