2015-12-22 72 views
2

如何在behat中的一個場景中的步驟之間使用變量? 我需要存儲$ output的值,然後在第二步中使用它。Behat:在場景中的步驟之間使用變量

比方說,我有以下結構:

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"; 
     } 
    } 
} 

回答

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"; 
     } 
    } 
} 
+0

非常感謝! 你幫了我 – laechoppe

相關問題