编程语言
首页 > 编程语言> > php-Behat 3-未找到“ FeatureContext”上下文类,因此无法使用

php-Behat 3-未找到“ FeatureContext”上下文类,因此无法使用

作者:互联网

我过去曾经尝试过Behat 2.5,但没有设置问题,但是现在我只是下载了Behat 3,尝试设置它时遇到了一些困难.

我的问题是,在全新安装后,如果我创建behat.yml文件,则似乎无法定义FeatureContext文件的位置,并且无法运行任何测试.

我的composer.json如下所示:

{
"require-dev": {
    "behat/behat": "~3.0.4",
    "sensiolabs/behat-page-object-extension": "2.0.*@dev"
},
"require": {
    "behat/mink": "1.6.*",
"behat/mink-goutte-driver": "*",
    "behat/mink-selenium2-driver": "*"
}

}

我的项目文件夹的结构如下:

behat/
  bootstrap/
    FeatureContext.php
  config/
    behat.yml
  features/
    CheckHome.feature
  vendor/
  composer.json
  composer.lock

还有我的behat.yml文件:

default:
  autoload:
    '': %paths.base%/../bootstrap
  suites:
    default:
      paths:
        - %paths.base%/../features
      contexts:
        - FeatureContext

当我尝试使用以下方法运行CheckHome.feature中的方案时

vendor/bin/behat

我收到以下错误:

Behat\Behat\Context\Exception\ContextNotFoundException]
`FeatureContext` context class not found and can not be used.

设置自动加载以使其能够识别我的上下文的正确方法是哪种?

谢谢

解决方法:

您不需要像那样写.它适用于我以下:

# behat.yml
default:
    autoload: [ %paths.base%/contexts ]
    extensions:
        Behat\MinkExtension:
            base_url: http://www.google.com
            sessions:
                default:
                    selenium2: ~
        Sanpi\Behatch\Extension: ~
    suites:
        default:
            paths:    [ %paths.base%/features ]
            filters:
            contexts:
                - FeatureContext

注意,我不必将其放在新行上或将其视为关联数组.我将上下文更改为从根目录的“ contexts”目录自动加载.我发现它是“功能”下的子文件夹,并且默认情况下将该文件夹称为“引导程序”而不是“上下文”,这有点令人讨厌.

我希望更好地记录Behat3.x.您甚至无法在任何地方的代码中清楚地找到此信息.

标签:behat,autoload,composer-php,php
来源: https://codeday.me/bug/20191029/1956680.html