无法识别自定义上下文中的步骤

时间:2015-09-22 15:31:31

标签: php behat

我已经设置了我的第一个Behat项目,但是我在定义除FeatureContext之外的上下文时遇到了麻烦。它被创建(我在__construct中使用模具进行检查),但步骤不会被调用。

这是我的文件夹结构:

|-root
  |-bin
  |-features
    |-FeatureContext.php
    |-PageLoaderContext.php
    |-page_loading.feature

我的package.json

{
  "require": {
    "behat/behat":           "3.0.5",
    "behat/mink-extension":  "*",
    "behat/mink-goutte-driver":     "*",
    "behat/mink-selenium2-driver":  "*",
    "behat/mink-zombie-driver":  "*",
    "symfony/http-kernel":  "*"
  },
  "minimum-stability": "dev",
  "config": {
    "bin-dir": "bin"
  } 
}

这是我的behat.yaml

default:            
  suites:
    default:
      contexts:
        - PageLoaderContext

我的功能

Feature: Tutte le pagine del sito caricano senza errori
  Per poter usare il sito
  Come utente
  Ho bisogno che tutte le pagine carichino senza errori

  Scenario Outline: Controlla il caricamento senza errori di pagine significative
    Given I'm on "<url>"
    When La pagina finisce di caricare
    Then Dovrei ottenere uno status code HTTP pari a "<code>"
    And Il "<selector>" della pagina dovrebbe contenere "<value>"

    Examples:
        | url | code | selector   | value  |
        | ?   | 200  | head title | Spagro |

PageLoaderContext.php

<?php

use Behat\Behat\Exception\PendingException;

class PageLoaderContext implements \Behat\Behat\Context\Context
{
  /**
   * @Given /^Carico la pagina "([^"]*)"$/
   */
  public function caricoLaPagina($arg1)
  {
    throw new PendingException();
  }

  /**
   * @When /^La pagina finisce di caricare$/
   */
  public function laPaginaFinisceDiCaricare()
  {
    throw new PendingException();
  }

  /**
   * @Then /^Dovrei ottenere uno status code HTTP pari a "([^"]*)"$/
   */
  public function dovreiOttenereUnoStatusCodeHttpPariA($arg1)
  {
    throw new PendingException();
  }

  /**
   * @Given /^Il "([^"]*)" della pagina dovrebbe contenere "([^"]*)"$/
   */
  public function ilDellaPaginaDovrebbeContenere($arg1, $arg2)
  {
    throw new PendingException();
  }
}

就像我说的,如果我实现FeatureContext中的步骤,一切都很好,但这不会起作用。

2 个答案:

答案 0 :(得分:0)

尝试将behat.yml更改为

default:            
  suites:
    pageLoaderSuite:
      paths:
        - %paths.base%/features
      contexts:
        - Path\To\Your\Context

但是我可以看到你没有命名空间PageLoaderContextClass

答案 1 :(得分:0)

我尝试让套件工作,但Behat似乎忽略了它们。所以我不得不在套件上使用配置文件并且它有效。

*behat.yaml*
page_loading:
  paths:
    features:  features\bootstrap\page_loading
    bootstrap: %behat.paths.features%
  context:
    class: PageLoaderContext

现在,对于每个功能,我使用.feature文件和上下文类在bootstrap中创建一个文件夹。