Di V6, untuk melewati skenario, saya menggunakan kait Sebelum setiap skenario
Before({ tags: '<strong i="6">@ignore</strong>' }, async function () {
return 'skipped';
});
Kode yang sama ini tidak dikompilasi lagi di v7 dengan TypeScript:
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>'.
Apa cara yang tepat untuk melewati skenario di v7?
Terima kasih
Saya baru saja menemukan masalah yang sama persis saat menambahkan dukungan untuk Cucumber v7 ke Serenity/JS .
Bagi saya ini adalah masalah dengan definisi tipe daripada fungsi sebenarnya, yang bekerja dengan cara yang sama persis seperti di v6.
@charlierudolph / @davidjgoss , maukah Anda memeriksa apakah pemikiran saya di bawah ini benar?
Dalam support_code_library_builder/types.ts
ada definisi berikut:
export type TestCaseHookFunctionWithoutParameter = () => void | Promise<void>
export type TestCaseHookFunctionWithParameter = (
arg: ITestCaseHookParameter
) => void | Promise<void>
Karena Mentimun memungkinkan kait untuk mengembalikan void
, string
dari 'skipped'
atau 'pending'
, atau Promise
dengan salah satu hasil tersebut , implementasi yang ditingkatkan dapat terlihat kurang lebih seperti ini:
export type TestCaseHookFunctionResult = 'skipped' | 'pending' | void
export type TestCaseHookFunctionWithoutParameter = () => TestCaseHookFunctionResult | Promise<TestCaseHookFunctionResult>
export type TestCaseHookFunctionWithParameter = (
arg: ITestCaseHookParameter
) => TestCaseHookFunctionResult | Promise<TestCaseHookFunctionResult>
Sampai perubahan ini atau perubahan serupa diperkenalkan, solusi untuk masalah ini akan menentukan kait uji sebagai berikut:
import { Before } from '@cucumber/cucumber';
Before({ tags: '<strong i="25">@ignore</strong>' }, function () {
return 'skipped' as any;
});
Hai @jan-molak , terima kasih banyak atas tanggapan Anda, solusi Anda bekerja dengan sempurna!
Terima kasih atas solusinya @ jan-molak - Saya akan segera membahasnya.
Komentar yang paling membantu
Saya baru saja menemukan masalah yang sama persis saat menambahkan dukungan untuk Cucumber v7 ke Serenity/JS .
Bagi saya ini adalah masalah dengan definisi tipe daripada fungsi sebenarnya, yang bekerja dengan cara yang sama persis seperti di v6.
@charlierudolph / @davidjgoss , maukah Anda memeriksa apakah pemikiran saya di bawah ini benar?
Dalam
support_code_library_builder/types.ts
ada definisi berikut:Karena Mentimun memungkinkan kait untuk mengembalikan
void
,string
dari'skipped'
atau'pending'
, atauPromise
dengan salah satu hasil tersebut , implementasi yang ditingkatkan dapat terlihat kurang lebih seperti ini:Sampai perubahan ini atau perubahan serupa diperkenalkan, solusi untuk masalah ini akan menentukan kait uji sebagai berikut: