Я хочу создать два разных файла Context — FeatureContext.php и ModuleContext.php и использовать их для запуска тестов behat (файлы .feature).
Я не хочу огромный монолитный файл FeatureContext.php; поэтому я распределяю функции в двух файлах.
В стандартном FeatureContext.php я определил некоторые пользовательские функции, такие как:
class FeatureContext extends MinkContext{
/**
* Wait for site to load
*
* @Then /I wait for the site to load$/
*/
public function iWait(){
$this->getSession()->wait();
}
}
В ModuleContext.php я хочу вызвать методы следующим образом: ClassName :: MethodName (например, MinkContext :: fixStepArgument вместо $ this-> fixStepArgument) Я определил функции
class ModuleContext extends FeatureContext implements Context{
/**
* Plugin availability
*
* @Then /^"([^"]*)" plugin is available for "([^"]*)"$/
*/
public function pluginIs AvailableFor(){
$pluginActivationField = MinkContext::getSession->getPage->find('css selector')->getText()
}
}
Внутри behat.yml я определил два контекста в профиле по умолчанию
Существует 3 разных профиля, которые обозначают разные среды тестирования. Один из профилей prod имеет другой пароль для администратора, поэтому разделы FeatureContext и WordPressContext повторяются под этим профилем.
#behat.yml
default:
suites:
default:
contexts:
- FeatureContext:
parameters:
screen_shot_path: 'path to directory'
theme_url: ''
users:
admin:' admin password'
local:'local password'
- WordPressContext:
parameters:
screen_shot_path: 'path to directory'
theme_url: ''
users:
admin:' admin password'
local:'local password'
Когда я пытаюсь запустить тест (файл .feature), я получаю следующую ошибку:
Шаг «/ ^ Я жду, пока сайт загрузит $ /», уже определен в ModuleContext :: iWaitForTheSiteToLoad ()
FeatureContext :: iWaitForTheSiteToLoad ()
ModuleContext :: iWaitForTheSiteToLoad ()
Я использую PHPStorm. Как мне реализовать два разных контекста?
Спасибо!
Задача ещё не решена.
Других решений пока нет …