Behat 3.0具有文件夹/路径

Foo*_*Bar 4 php behat laravel

我正在尝试设置Behat 3.0.我想改变我的功能所在的路径.

目前,我的behat.yml配置如下所示:

default:
    autoload:
        '': app/tests/acceptance
Run Code Online (Sandbox Code Playgroud)

运行behat --initwil acceptance/FeatureContext.phpapp/tests目录中创建.

但是,它将features在我的项目的根目录中创建该文件夹.我想把这个features文件夹放在app/tests/acceptance文件夹中.

我怎样才能做到这一点?

小智 13

Behat 3支持套件配置文件.

您唯一需要做的就是将自定义路径添加到默认配置文件:

default:
  autoload:
    '': %paths.base%/app/tests/acceptance
  suites:
    default:
      paths: [ %paths.base%/app/tests/acceptance/features ]
Run Code Online (Sandbox Code Playgroud)

提示1

始终使用该%paths.base%变量可以从其他目录运行Behat测试.

提示2

根据Behat的PSR-0自动加载机制在您实施更多上下文时可能会出现问题.

好的做法是使用作曲家的PSR-4自动加载机制来运行命名空间的Behat功能.

在上面的示例中设置Behat后,您需要删除bahat.yml中的自动加载部分并添加contextsdefault配置文件:

default:
  suites:
    default:
      paths: [ %paths.base%/app/tests/acceptance/features ]
      contexts: [ MyApp\Tests\Acceptance\FeatureContext ]
Run Code Online (Sandbox Code Playgroud)

将自动加载配置添加到composer.json:

{
    [...]
    "autoload-dev": {
        "psr-4": {
            "MyApp\\Tests\\Acceptance\\": "app/tests/acceptance"
        }
    }
    [...]
}
Run Code Online (Sandbox Code Playgroud)

然后简单地转储自动加载器composer dump-autoload.