我有一个behat项目,其中包含许多套件,功能和方案。在一个特定的套件中,我需要创建一个BeforeFeature
钩子,因为我需要在某个特定功能的所有方案之前执行一次操作,而不是像BeforeScenario
钩子那样在每个方案之前执行一次操作。
由于我有很多上下文,因此我需要在BeforeFeature
函数上互相访问上下文。但是,似乎只能在BeforeScenario
钩上实现。
Here是有关如何相互访问上下文的参考
这是有效的代码:
/** @BeforeScenario */
public function gatherContexts(BeforeScenarioScope $scope)
{
$environment = $scope->getEnvironment();
$this->minkContext = $environment->getContext('Behat\MinkExtension\Context\MinkContext');
}
这是无效的代码:
/** @BeforeFeature */
public function gatherContexts(BeforeFeatureScope $scope)
{
$environment = $scope->getEnvironment();
$this->minkContext = $environment->getContext('Behat\MinkExtension\Context\MinkContext');
}
我希望BeforeFeature
的代码能够正常工作(就像BeforeScenario
的代码一样),但我却收到此错误:
┌─ @BeforeFeature # FeatureContext::gatherContexts()
│
╳ Fatal error: Call to undefined method Behat\Behat\Context\Environment\UninitializedContextEnvironment::getContext() (Behat\Testwork\Call\Exception\FatalThrowableError)