如何解决无法在cucumber-js中的钩子之前返回
目前我正在尝试根据提供的标签跳过黄瓜 js 中的测试。查看他们的文档似乎很简单,以下应该有效。
Before({ tags: '@skip' },async function() {
return 'skip'
})
但是当我这样做时,我收到以下错误:
TSError: ⨯ Unable to compile TypeScript:
e2e/hooks/hooks.ts(36,1): 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,gave the following error.
Argument of type '() => Promise<string>' is not assignable to parameter of type 'TestCaseHookFunction'.
Type '() => 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>'.
Type 'string' is not assignable to type 'void'.
注意:我正在使用打字稿
似乎没有允许您返回字符串的重载方法。我挖掘了他们的源代码,似乎没有重载方法
export declare const Before: ((code: import("./support_code_library_builder/types").TestCaseHookFunction) => void) & ((tags: string,code: import("./support_code_library_builder/types").TestCaseHookFunction) => void) & ((options: import("./support_code_library_builder/types").IDefineTestCaseHookOptions,code: import("./support_code_library_builder/types").TestCaseHookFunction) => void);
我在这里遗漏了什么吗?我对打字稿相当陌生,所以很有可能。但似乎为 before 函数定义的每个方法都返回 void。
解决方法
这是我的解决方案,你说得对,这太奇怪了。
使用 // @ts-ignore
装饰器。
import {
IDefineTestCaseHookOptions,TestCaseHookFunction
} from '@cucumber/cucumber/lib/support_code_library_builder/types';
// @ts-ignore
Before(function (testCase: IDefineTestCaseHookOptions,callback: TestCaseHookFunction): void {
console.log(testCase);
// @ts-ignore
callback();
});
```
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。