php - Behat 外部文件中的步骤定义

标签 php testing bdd behat

默认情况下,Behat 在名为 FeatureContext 的文件中查找步骤定义(所有步骤都在一个文件中)。
步骤多,维护这么大的文件很困难。

我希望每个功能文件有一个定义文件。

如何在外部文件中定义步骤?

例如

homepage.feature
HomepageContext extends FeatureContext

最佳答案

Behat 有多个选项供您将 FeatureContext 拆分为多个类。首先,您可以使用老式的 php5 继承。如果继承不是您想要的,Behat 还支持子上下文:“Using Subcontexts ”。

接下来,如果您想要以不同于 FeatureContext 的方式命名您的类,您可以在 behat.yml 配置文件的“Context Configuration”部分重新定义它。

这样,您可以将通用定义和 Hook 拆分为单独的类,并在其他功能套件中使用它们以及子上下文或继承。

但是你的问题还问:

I'd like to have one definition file per feature file.

这个要求是完全错误的。 Behat and Scenario BDD 就是用业务术语描述您的应用程序行为,并为描述的行为创建测试字典。请记住这一点,从逻辑上讲,您不能为一个功能集使用多个不同的词典。通过编写步骤定义,您告诉 Behat Given I am on "/news" 是什么意思。如果您希望该步骤对不同的功能具有不同的含义,那么您就错了。

Behat 由 2 个主要且足够独立的概念组成:

  1. *.feature 文件,用 Gherkin 语言编写。这些文件应该是 self 描述的。意思是,他们应该为读者提供所有信息以便理解他们。 Gherkin 不是用于功能测试的新编程语言,它只是用户故事的ma​​rkdown!
  2. FeatureContext.php 类,描述 Behat 应如何测试您的功能。它定义了与整个应用程序功能套件一起使用的应用程序范围的字典。这是您的 ma​​rkdown 类用户故事和实际功能测试之间的编程桥梁。

而且你不应该把事情搞砸。单功能套件应该有单步字典(定义)。但是由于继承和子上下文,您可以在多个功能套件中使用单个字典。是的,您可以将单个套件字典拆分为多个 php 类;-)

关于php - Behat 外部文件中的步骤定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7377898/

相关文章:

selenium - 如何根据同级输入的@id选择跨度

cucumber - Gherkin 中的分组步骤或连接场景

ruby - 如何对 Web 应用程序进行全栈集成测试

php - XMLHttpRequest 在 IE9 中总是返回 undefined

php - 如何在 php 中按日期设置和启用新的 php 内容?

php - 强制在客户端缓存数据

php - HACK Lambda 示例——什么?

javascript - Redux Mock Store 提供 'Actions must be plain objects. Use custom middleware for async actions.'

testing - 函数调用中的测试或 clojure 中的语句未运行

cucumber - 将 Cucumber-jvm 从版本 4 升级到版本 6 时是否需要额外的上下文配置?