Behat中外部文件中的步骤定义 [英] Step definitions in external files in Behat
本文介绍了Behat中外部文件中的步骤定义的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
默认情况下,behat在名为FeatureContext
的文件中查找步骤定义(一个文件中的所有步骤).
有很多步骤,很难维护这么大的文件.
Behat by default looks for the step definitions in file named FeatureContext
(all steps in one file).
Having a lot of steps, it's hard to maintain such a big file.
我希望每个功能文件有一个定义文件.
I'd like to have one definition file per feature file.
如何在外部文件中具有步骤定义?
How can I have step definitions in external files?
例如
homepage.feature
HomepageContext extends FeatureContext
推荐答案
使用类继承和单独的上下文.
Use class inheritance and separate contexts.
# /features/contexts/
AbstractContext extends BehatContext {}
FeaturenameContext extends AbstractContext {}
然后在/feature/FeatureContext.php
中导入上下文文件:
Then in /feature/FeatureContext.php
import the context files:
/**
* Initializes context.
* Every scenario gets it's own context object.
*
* @param array $parameters context parameters (set up via behat.yml)
*/
public function __construct(array $parameters) {
// import all context classes from context directory, except the abstract one
$filesToSkip = array('AbstractContext.php');
$path = dirname(__FILE__) . '/../contexts/';
$it = new RecursiveDirectoryIterator($path);
/** @var $file SplFileInfo */
foreach ($it as $file) {
if (!$file->isDir()) {
$name = $file->getFilename();
if (!in_array($name, $filesToSkip)) {
$class = pathinfo($name, PATHINFO_FILENAME);
require_once dirname(__FILE__) . '/../context/' . $name;
$this->useContext($class, new $class($parameters));
}
}
}
}
这篇关于Behat中外部文件中的步骤定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文