parseEtalon($fixtureName . '.yml'); $features = $this->parseFixture($fixtureName . '.feature'); $this->assertInternalType('array', $features); $this->assertEquals(1, count($features)); $fixture = $features[0]; $this->assertEquals($etalon, $fixture); } public function testParserResetsTagsBetweenFeatures() { $parser = $this->getGherkinParser(); $parser->parse(<<parse(<<assertFalse($feature2->hasTags()); } protected function getGherkinParser() { if (null === $this->gherkin) { $keywords = new ArrayKeywords(array( 'en' => array( 'feature' => 'Feature', 'background' => 'Background', 'scenario' => 'Scenario', 'scenario_outline' => 'Scenario Outline', 'examples' => 'Examples', 'given' => 'Given', 'when' => 'When', 'then' => 'Then', 'and' => 'And', 'but' => 'But' ), 'ru' => array( 'feature' => 'Функционал', 'background' => 'Предыстория', 'scenario' => 'Сценарий', 'scenario_outline' => 'Структура сценария', 'examples' => 'Примеры', 'given' => 'Допустим', 'when' => 'То', 'then' => 'Если', 'and' => 'И', 'but' => 'Но' ), 'ja' => array ( 'feature' => 'フィーチャ', 'background' => '背景', 'scenario' => 'シナリオ', 'scenario_outline' => 'シナリオアウトライン', 'examples' => '例|サンプル', 'given' => '前提<', 'when' => 'もし<', 'then' => 'ならば<', 'and' => 'かつ<', 'but' => 'しかし<' ) )); $this->gherkin = new Parser(new Lexer($keywords)); } return $this->gherkin; } protected function getYamlParser() { if (null === $this->yaml) { $this->yaml = new YamlFileLoader(); } return $this->yaml; } protected function parseFixture($fixture) { $file = __DIR__ . '/Fixtures/features/' . $fixture; return array($this->getGherkinParser()->parse(file_get_contents($file), $file)); } protected function parseEtalon($etalon) { $features = $this->getYamlParser()->load(__DIR__ . '/Fixtures/etalons/' . $etalon); $feature = $features[0]; return new FeatureNode( $feature->getTitle(), $feature->getDescription(), $feature->getTags(), $feature->getBackground(), $feature->getScenarios(), $feature->getKeyword(), $feature->getLanguage(), __DIR__ . '/Fixtures/features/' . basename($etalon, '.yml') . '.feature', $feature->getLine() ); } }