【问题标题】:Behat - programatic test step definition (ArrayLoader)Behat - 程序化测试步骤定义 (ArrayLoader)
【发布时间】:2015-07-16 03:39:06
【问题描述】:

我成功地使用 Behat 3.0 和功能文件中定义的测试,使用 Gherkin 语言。但是,在某些情况下,以编程方式定义步骤会很有用 - Gherkin 是可读的,但很难定义多个变体。

有没有办法以编程方式定义测试步骤(在 PHP 类中),以便 Behat 可以获取这些步骤?我找到了ArrayLoader 类,它似乎可以做到这一点。但是,我无法让它与 Behat 一起工作。 Behat 似乎默认使用 Gherkin FileLoader,我还没有找到在配置文件中重写(或者更确切地说是扩展)这种行为的方法。

如何将 Gherkin 文件中的测试输入与 PHP 文件中指定的自定义定义结合起来?

【问题讨论】:

    标签: php bdd behat gherkin


    【解决方案1】:

    有没有办法以编程方式定义测试步骤(在 PHP 类),...

    如果我没有误解你想要什么,你可以这样做:

    use Behat\Behat\Definition\Call\Then;
    use Behat\Behat\Definition\Call\When;
    use Behat\MinkExtension\Context\MinkContext;
    
    class FeatureContext extends MinkContext
    {
        public function iWaitSeconds($second)
        {
            new Then(.....);
            new When(.....);
            new Given(.....);
        }
    }
    

    您需要对更多示例进行一些研究。

    例如:new When("The content is:", new PyStringNode($string));

    【讨论】:

    • 这还不错。我需要 PHPUnit 中的 DataProvider 之类的东西:定义一种方法,但让 Behat 使用不同的参数多次运行它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    相关资源
    最近更新 更多