【问题标题】:Behat 3 - `FeatureContext` context class not found and can not be usedBehat 3 - `FeatureContext` 上下文类未找到且无法使用
【发布时间】:2015-02-12 04:42:02
【问题描述】:

我过去曾尝试过 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.

设置自动加载以识别我的上下文的正确方法是什么?

谢谢

【问题讨论】:

    标签: php composer-php autoload behat


    【解决方案1】:

    我修好了。我假设基本路径是我目录的根目录,但它是存储 behat.yml 的地方。因此,为了使用我当前的配置,我必须更改 behat.yml 文件中的路径,如下所示:

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

    【讨论】:

    • 这个和原来一模一样?
    【解决方案2】:

    你不需要这么写。它适用于我:

    # 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
    

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

    我希望 Behat 3.x 有更好的文档记录。您甚至无法在任何地方的代码中清楚地找到这些信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 2015-02-28
      • 1970-01-01
      • 1970-01-01
      • 2019-12-24
      • 1970-01-01
      相关资源
      最近更新 更多