示例#1
0
 protected function runStep(StepNode $stepNode)
 {
     $params = [];
     if ($stepNode->hasArguments()) {
         $args = $stepNode->getArguments();
         $table = $args[0];
         if ($table instanceof TableNode) {
             $params = [$table->getTableAsString()];
         }
     }
     $meta = new Meta($stepNode->getText(), $params);
     $meta->setPrefix($stepNode->getKeyword());
     $this->scenario->setMetaStep($meta);
     // enable metastep
     $stepText = $stepNode->getText();
     $this->getScenario()->comment(null);
     // make metastep to be printed even if no steps
     foreach ($this->steps as $pattern => $context) {
         $matches = [];
         if (!preg_match($pattern, $stepText, $matches)) {
             continue;
         }
         array_shift($matches);
         if ($stepNode->hasArguments()) {
             $matches = array_merge($matches, $stepNode->getArguments());
         }
         call_user_func_array($context, $matches);
         // execute the step
         break;
     }
     $this->scenario->setMetaStep(null);
     // disable metastep
 }