2017-05-30 8 views
0

behat/binから自分のbehatセッションを実行すると、FeatureContextで定義されたステップだけが使用されていることがわかります。私がbeta -dlを試みると、これが確認されます。私のMinkContextはロードされていないので、使用できません。これらは私のcomposer.json、behat.yml、FeatureContextファイルです。MinkContextがロードされずに使用されていません

Composer json 
================= 

{ 
    "require-dev": { 
     "behat/behat": "~3.0.13", 
     "behat/mink": "~1.6.0", 
     "behat/mink-extension": "~2.0.0", 
     "behat/mink-goutte-driver": "~1.1.0", 
     "behat/mink-selenium2-driver": "*", 
     "peridot-php/webdriver-manager": "dev-master", 
     "bossa/phpspec2-expect": "1.*" 
    }, 
    "config": { 
     "bin-dir": "bin" 

    } 
} 
behat.yml 
===================== 
    default: 
    autoload: [ %paths.base%/contexts ] 
    extensions: 
     Behat\MinkExtension\Extension: 
      base_url: http://www.google.com 
      sessions: 
       default: 
        selenium2: ~ 
     Sanpi\Behatch\Extension: ~ 
    suites: 
     default: 
      paths: [ %paths.base%/features ] 
      filters: 
      contexts: 
       - FeatureContext 
       - Drupal\DrupalExtension\Context\DrupalContext 
       - Drupal\DrupalExtension\Context\MinkContext 
       - Drupal\DrupalExtension\Context\MessageContext 
       - Drupal\DrupalExtension\Context\DrushContext 
       - Behat\MinkExtension\Context\MinkContext 


FeatureContext.php 
==================== 
<?php 

use Behat\Behat\Context\Context; 
use Behat\Behat\Context\SnippetAcceptingContext; 
use Behat\Gherkin\Node\PyStringNode; 
use Behat\Gherkin\Node\TableNode; 
use Behat\MinkExtension\Context\MinkContext; 
use Behat\MinkExtension\Context\RawMinkContext; 

use Drupal\DrupalExtension\Context\RawDrupalContext; 
use Behat\Mink\Mink, 
Behat\Mink\Session, 
Behat\Mink\Selenium2Driver; 


/** 
* Defines application features from the specific context. 
*/ 
class FeatureContext extends RawMinkContext implements SnippetAcceptingContext 
{ 
    public $mink; 
    public $driver; 
    public $session; 
    private $contactName; 
    private $nodeId; 

    /** 
    * Initializes context. 
    * 
    * Every scenario gets its own context instance. 
    * You can also pass arbitrary arguments to the 
    * context constructor through behat.yml. 
    */ 
    public function __construct() 
    { 
     // $this->driver = new \Behat\Mink\Driver\Selenium2Driver(); 
     // $this->getSession() = new \Behat\Mink\getSession()($this->driver); 
     // $this->getSession()->start(); 
    } 

     /** 
     * Opens homepage. 
     * 
     * @Given /^(?:|I)am on (?:|the)homepage$/ 
     * @When /^(?:|I)go to (?:|the)homepage$/ 
     */ 
     public function iAmOnHomepage() 
     { 
      $this->visitPath('/'); 
     } 
    /** 
    * @param string $name 
    * An iframe name (null for switching back). 
    * 
    * @Given /^(?:|I)switch to an iframe "([^"]*)"$/ 
    * @Then /^(?:|I)switch back from an iframe$/ 
    */ 
    public function iSwitchToAnIframe($name = NULL) 
    { 
     $this->getSession()->switchToIFrame($name); 
    } 

    /** 
    * @Given /^I set browser window size to "([^"]*)" x "([^"]*)"$/ 
    */ 
    public function iSetBrowserWindowSizeToX($width, $height) 
    { 
     $this->getSession()->resizeWindow((int)$width, (int)$height, 'current'); 
    } 

    /** 
    * @Given I click the element :arg1 
    */ 
    public function iClickTheElement($selector) 
    { 
     $page = $this->getSession()->getPage(); 
     $element = $page->find('css', $selector); 

     if (empty($element)) { 
      throw new Exception("No html element found for the selector ('$selector')"); 
     } 

     $element->click(); 
    } 
    // 
    /** 
    * @When /^wait (\d+) seconds?$/ 
    */ 
    public function waitSeconds($seconds) 
    { 
     $this->getSession()->wait(1000 * $seconds); 
    } 

    /** 
    * @Given /^I remember the name in "([^"]*)"$/ 
    */ 
    public function iRememberTheNameIn($selector) 
    { 
     $element = $this->assertgetSession()->elementExists('css', $selector); 
     $this->contactName = $element->getText(); 
    } 

    /** 
    * @Then /^element "([^"]*)" should contain the name I remembered$/ 
    */ 
    public function elementShouldContainTheNameIRemembered($selector) 
    { 
     $element = $this->assertgetSession()->elementExists('css', $selector); 
     $contactName = $element->getText(); 
     if ($contactName != $this->contactName) { 
      throw new Exception("The contact name '$contactName' is not equal to the original name '$this->contactName'"); 
     } 
    } 

    /** 
    * @Given /^I set the value "([^"]*)" for the cookie "([^"]*)"$/ 
    */ 
    public function iSetTheValueForTheCookie($value, $cookie) 
    { 
     $this->getSession()->setCookie($cookie, $value); 
    } 

    /** 
    * @Given /^My "([^"]*)" content:$/ 
    */ 
    public function myContent($type, TableNode $nodesTable) 
    { 
     $saved = false; 
     foreach ($nodesTable->getHash() as $nodeHash) { 
      $node = (object)$nodeHash; 
      $node->type = $type; 
      $saved = $this->nodeCreate($node); 
     } 
     if ($saved) { 
      $this->nodeId = $saved->nid; 
     } 
    } 

    /** 
    * @Given /^I fill in the input field "(?P<field>(?:[^"]|\\")*)" with the last nid$/ 
    */ 
    public function iFillInTheInputFieldWithTheLastNid($field) 
    { 
     $value = 'node/' . $this->nodeId; 
     $field = $this->fixStepArgument($field); 
     $value = $this->fixStepArgument($value); 
     $this->getSession()->getPage()->fillField($field, $value); 
    } 

    /** 
    * Returns fixed step argument (with \\" replaced back to ") 
    * 
    * @param string $argument 
    * 
    * @return string 
    */ 
    protected function fixStepArgument($argument) 
    { 
     return str_replace('\\"', '"', $argument); 
    } 

    /** 
    * @Given /^I place an image in my local file system$/ 
    */ 
    public function iPlaceAnImageInMyLocalFileSystem() { 
     $url = 'https://www.portofrotterdam.com/sites/all/themes/custom/portofrotterdam/favicon-128.png'; 
     $img = '/tmp/testimage.png'; 
     file_put_contents($img, file_get_contents($url)); 
    } 

    /** 
    * @Given /^I cleanup database table entries for the subsite test$/ 
    * @Given /^I cleanup database table entries for the downloads test$/ 
    */ 
    public function iCleanupDatabaseTableEntriesForTheSubsiteTest() { 
     db_query("DELETE FROM {filehash} WHERE md5 = 'bb7c2beef51b3be866a18292aa46a084'"); 
     db_query("DELETE FROM {file_managed} WHERE filename = 'testimage.png'"); 
    } 


} 

答えて

1

MinkExtensionは名前空間を変更しました。あなたは、あなたがそれをupvoteすることができ、この答えは便利だった場合は代わりにBehat\MinkExtension\ExtensionのはBehat\MinkExtension

default: 
    autoload: [ %paths.base%/contexts ] 
    extensions: 
     Behat\MinkExtension: 
      base_url: http://www.google.com 
      sessions: 
       default: 
       selenium2: ~ 
     Sanpi\Behatch\Extension: ~ 
+0

@Frank Bontesを使用するようにしてください。 –

+0

とそれがあなたのために本当なら、受け入れられたと印を付ける:) –

関連する問題