Behat:在场景中的步骤之间使用变量

时间:2015-12-22 17:59:46

标签: php variables behat scenarios

如何在一个场景中的步骤之间使用变量? 我需要存储$ output的值,然后在第二步中使用它。

我们说我有以下结构:

class testContext extends DefaultContext
{
    /** @When /^I click "([^"]*)"$/ */
    public function iClick($element) {
       if ($element = 2){
           $output = 5        
       }
    }


    /** @When /^I press "([^"]*)"$/ */
    public function iPress($button) {
        if($button == $output){
        echo "ok";
        }
    }
}

1 个答案:

答案 0 :(得分:3)

上下文类可以是有状态的;场景的所有步骤都将使用相同的上下文实例。这意味着您可以使用常规类属性在步骤之间预先处理状态:

class testContext extends DefaultContext
{
    private $output = NULL;

    /** @When /^I click "([^"]*)"$/ */
    public function iClick($element)
    {
       if ($element = 2) {
           $this->output = 5;
       }
    }


    /** @When /^I press "([^"]*)"$/ */
    public function iPress($button)
    {
        if ($this->output === NULL) {
            throw new BadMethodCallException("output must be initialized first");
        }

        if ($button == $this->output) {
            echo "ok";
        }
    }
}