2014-10-30 79 views
3

我曾嘗試過Behat 2.5,並且沒有設置它的問題,但現在我剛剛下載Behat 3,並且在嘗試設置時遇到一些困難它起來。Behat 3 - `FeatureContext`上下文類未找到並且無法使用

我的問題是,全新安裝後,如果我創建一個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 

當我嘗試使用

vendor/bin/behat 

我收到以下錯誤內運行CheckHome.feature場景:

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

這是設置自動加載所以我承認語境正確的方法是什麼?

謝謝

回答

1

我修好了。我假設基本路徑是我的目錄的根目錄,但它是存儲behat.yml的地方。所以,爲了我目前的配置工作,我不得不改變在behat.yml文件的路徑如下:

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

這和原來的完全一樣嗎? – Nealv 2014-12-17 12:36:07

3

你不需要把它寫完全是這樣。這對我的作品有以下幾點:

我沒有
# 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有更好的記錄。你甚至無法在任何地方的代碼中清楚地找到這些信息。

相關問題