Javascript cumberjs中装饰步骤的实现
导言 我正在使用打字脚本。代码实现的示例看起来像普通的cucumber实现:Javascript cumberjs中装饰步骤的实现,javascript,typescript,cucumber,cucumberjs,Javascript,Typescript,Cucumber,Cucumberjs,导言 我正在使用打字脚本。代码实现的示例看起来像普通的cucumber实现: import { Given, Then, When } from 'cucumber' Given(`Page is up and running`, function(this: World) { someFunction() }) 目标 我想要实现的是能够以某种方式装饰给定的,以便: 某些操作可以在给定的中的代码之前调用。比方说,举个简单的例子,我想先打印给定的参数(这样页
import {
Given,
Then,
When
} from 'cucumber'
Given(`Page is up and running`, function(this: World) {
someFunction()
})
目标
我想要实现的是能够以某种方式装饰给定的,以便:
- 某些操作可以在
给定的
中的代码之前调用。比方说,举个简单的例子,我想先打印给定的
参数(这样
页面就启动并运行了
)
- 不需要修改现有的step实现
index.d.ts
中有两个别名函数定义,例如:
export function Given(pattern: RegExp | string, code: StepDefinitionCode): void;
export function Given(pattern: RegExp | string, options: StepDefinitionOptions, code: StepDefinitionCode): void;
在CucumberJS的原始版本中,有更多可用的钩子,包括
beforeStep
。但是,在最新版本的框架(如6.0.5)中,可以使用setDefinitionFunctionWrapper
实现此功能。例如:
setDefinitionFunctionWrapper(fn=>async函数步骤(…args){
//
//在步骤定义运行之前执行某些操作。
//
const result=等待fn.apply(此参数为args);
//
//在步骤定义运行后执行某些操作。
//
返回结果;
});
在线示例:
已知的限制和注意事项:
- 此函数将包装每个步骤定义和挂钩
- 这个特定的实现假设步骤定义或钩子没有使用回调
- 我不知道如何使回调和承诺在这里同时工作,这可能是可能的,但您必须自己管理,可能需要检查最后一个参数的类型,然后从那里处理它
- 在CucumberJS的原始版本中,有更多可用的挂钩,包括
beforeStep
。但是,在最新版本的框架(如6.0.5)中,可以使用setDefinitionFunctionWrapper
实现此功能。例如:
setDefinitionFunctionWrapper(fn=>async函数步骤(…args){
//
//在步骤定义运行之前执行某些操作。
//
const result=等待fn.apply(此参数为args);
//
//在步骤定义运行后执行某些操作。
//
返回结果;
});
在线示例:
已知的限制和注意事项:
- 此函数将包装每个步骤定义和挂钩
- 这个特定的实现假设步骤定义或钩子没有使用回调
- 我不知道如何使回调和承诺在这里同时工作,这可能是可能的,但您必须自己管理,可能需要检查最后一个参数的类型,然后从那里处理它