我想生成一个内部包含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。我该如何处理这种情况? 提前谢谢。
答案 0 :(得分:2)
您可以使用:
new Then("I should see:", new PyStringNode($string));
但是,Behat 3中将删除步骤链接。此功能将作为扩展提供,但建议使用标准OO实践。在你的情况下你可以这样做:
$this->iShouldSee(new PyStringNode($string));