создание шага с pystring внутри FeatureContext

Я хочу сгенерировать шаг, внутри которого есть 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.

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

Я думаю, что проблема в pystring. Как я могу справиться с этой ситуацией? Заранее спасибо.


person Shadi Hariri    schedule 29.04.2014    source источник


Ответы (1)


Вы можете использовать:

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

Однако пошаговая цепочка будет удалена в Behat 3. Эта функция будет предоставляться как расширение, но вместо этого рекомендуется использовать стандартные методы объектно-ориентированного программирования. В вашем случае вы можете просто сделать:

$this->iShouldSee(new PyStringNode($string));
person Jakub Zalas    schedule 29.04.2014
comment
Спасибо!! Я не знал, что мы можем использовать такие объекты, как этот. Стандартный OO поддерживается в behat 2.5? - person Shadi Hariri; 30.04.2014
comment
Это... в конце концов, это php - person Jakub Zalas; 01.05.2014