如何在黄瓜-js-tsflow中使用挂钩(之前/之后)?

时间:2020-03-19 13:56:06

标签: typescript cucumberjs

我目前正在使用Cucumber-js-tsflow在Typescript中编写概念证明自动化解决方案,并且正在尝试复制以前在其他使用specflow的解决方案中实现的Hooks设置。

首先,我认为我将在功能/support/hooks.ts位置的单独的hooks文件中添加一个hook之前和之后的钩子,因为这是一个概念证明,我只希望它将一些文本记录到控制台: / p>

import { binding, before, after } from 'cucumber-tsflow';

@binding()
export class Hooks {
  @before()
  public static logMessageToConsoleBeforeTestRun(): void {
    console.log('Before test message.');
  }

  @after()
  public static logMessageToConsoleAfterTestRun(): void {
    console.log('After test message.');
  }
}

当我来运行场景时,上面没有将预期消息记录到控制台。

然后,我尝试通过在步骤文件而不是钩子文件中添加与上面相同的代码来简化操作,然后重新运行,但是仍然没有将预期的消息写入控制台。

在创建上述代码时,我确实遵循了cumme-js-tsflow(https://github.com/timjroberts/cucumber-js-tsflow#readme)自述文件中的文档,但是没有大量细节,我真的不确定我可能错过了什么

还有其他人有类似的问题并且能够解决吗?

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,发现在运行测试时我没有包含(要求)我的钩子文件。

我已经根据this article设置了Typescript和Cucumber,并且我的cumulage.js文件必须更新以需要我的钩子

// cucumber.js
let common = [
  'features/**/*.feature', // Specify our feature files
  '--require-module ts-node/register', // Load TypeScript module
  '--require src/step-definitions/**/*.ts', // Load step definitions
  '--require src/hooks/**/*.ts', // Load hooks
  '--format progress-bar', // Load custom formatter
  '--format node_modules/cucumber-pretty' // Load custom formatter
].join(' ');

module.exports = {
  default: common
};

答案 1 :(得分:0)

在hooks文件中需要做2处更改: 1)不要将钩子文件创建为类 2)使用以下格式:

FromSqlInterpolated

当您尝试执行以上述代码中提到的指定标记名称标记的场景时,将执行此块。