2014-01-02 2 views
2

У меня есть Behat.ymlКак я могу получить параметры из Behat.yml в php-файл?

default : 
    context : 
     parameters : 
      user: xyz 
      password : abc 

Также у меня есть файл с именем FeatureContext.php, который извлекает значения из behat.yml через

public function iExample($user, $password) 
    { 
     $userName=$this->getParameter($user); 
    } 

Но выдает ошибку, как

"Call to undefined method FeatureContext::getParameter()" 

Я что-то не хватает? .. я также добавил autoload.php в FeatureContext.php через

require_once __DIR__.'/../../vendor/autoload.php'; 

Пожалуйста, дайте знать, если у вас есть какие-либо идеи, почему это происходит?

ответ

6

Класс FeatureContext должен продлить BehatContext, а затем вы получите параметр-массив в качестве аргумента в конструкторе FeatureContext. См. Пример http://michaelheap.com/behat-selenium2-webdriver/.

Edit:

class FeatureContext extends BehatContext 
{ 
    private $params = array(); 

    public function __construct(array $parameters) 
    { 
     $this->params = $parameters; 
    } 

    public function iExample($user, $password) 
    { 
     $userName = $this->params['user']; 
    } 
} 

Я не использовал Behat на некоторое время, но вы, вероятно, получите идею.

+0

Я тоже пробовал с BehatContext. Это дает мне ту же ошибку ... »PHP Неустранимая ошибка: вызов неопределенного метода FeatureContext :: getParameter() в D: \ mypgms \ Again \ features \ bootstrap \ FeatureContext.php в строке 61" – sharan

+0

См. Мой отредактированный ответ , Не используйте getParameter (он, похоже, не существует, и я не могу найти его из документов API), вместо этого сохраните параметры для переменной-члена в конструкторе для последующего использования. – olga

+0

Большое вам спасибо ... это работает ... – sharan