在FeatureContext中使用pystring创建步骤

时间:2014-04-29 06:51:03

标签: php behat mink

我想生成一个内部包含pyString的步骤,如下所示:
首先在我的.feature文件中我有这些代码

Then I should see the following something:
    |label   |value|
    |test|12   |

我将步骤定义如下:

/**
     * @Then /^I should see the following something:$/
     */
    public function iShouldSeeTheFollowingAppStatistic(TableNode $table) {
        $hash = $table->getHash ();
        $steps=array();
        foreach ( $hash as $row ) {

            $then=new Then("I should see:\n\"\"\"\n \"label\" : \"".$row['label']."\"\n \"value\" : ".$row['value']."\n\"\"\"");
            $steps[]=$then;
        }
        return $steps;
    }

对于$ then变量,我定义了另一个自定义步骤:

/**
     * @Then /^I should see:$/
     */
    public function iShouldSee(PyStringNode $string)
    {
        echo $string;
    }

但遗憾的是我仍然得到未定义的步骤错误。

 Undefined step "I should see:
      """
       "label" : "test"
       "value" : 12
      """"

我认为问题是pystring。我该如何处理这种情况? 提前谢谢。

1 个答案:

答案 0 :(得分:2)

您可以使用:

new Then("I should see:", new PyStringNode($string));

但是,Behat 3中将删除步骤链接。此功能将作为扩展提供,但建议使用标准OO实践。在你的情况下你可以这样做:

$this->iShouldSee(new PyStringNode($string));