【问题标题】:Isolating scenarios in CabbageCabbage 中的隔离场景
【发布时间】:2026-01-29 16:05:02
【问题描述】:

我正在使用 Elixir 自动执行以 Gherkin 编写的规范中定义的验收测试。一种方法是使用名为 Cabbage 的 ExUnit 插件。

现在 ExUnit 似乎提供了一个在任何单个测试之前运行的 setup 钩子和一个在整个套件之前运行的 setup_all 钩子。

现在,当我尝试通过重置 setup 挂钩中的持久性来隔离我的 Gherkin 场景时,似乎在执行每个步骤定义之前都会清除持久性。但是 Gherkin 中的一个场景几乎总是需要多个步骤来构建测试环境并以固定的顺序执行测试。

另一方面,另一个选项 setup_all 挂钩会为每个功能文件重置一次持久性。但是 Gherkin 中的功能文件几乎总是包含多个场景,理想情况下它们应该彼此完全隔离。

因此,上述钩子似乎允许我隔离单个步骤(我认为这毫无意义)和整个功能文件(这远非最佳)。

有没有办法隔离每个场景?

【问题讨论】:

    标签: cucumber elixir gherkin ex-unit cabbage


    【解决方案1】:

    首先,有替代方案,例如:whitebread

    如果您的所有功能都需要一些类似的初始步骤,也许background steps 是值得研究的。可悲的是,这些更改混合在对新合并到的库的更大重写中。还有另一个PR,它也与其他功能混合在一起,目前正在等待companion library update。所以目前这不起作用。

    尚未使用 setup 挂钩测试库的行为方式,但 setup_all 应该可以正常工作。

    有标签这样的东西。我认为尚未与新版本一起发布,但已在 master 中。他们使用回调标签。您可以仔细查看example in tests

    目前有点混乱。我没有太多时间在这个图书馆上。

    希望对你有所帮助:)

    【讨论】: