2015-05-24 2 views
3

Я использую Laravel 5, Behat и норка Удлинитель для Laravel. composer.json часть для монтажа компонентов:Lravel 5, Behat, норка: параметр base_url не считывается из behat.yml

"require-dev": { 
    "phpunit/phpunit": "~4.0", 
    "behat/behat": "^3.0", 
    "behat/mink": "^1.6", 
    "behat/mink-extension": "^2.0", 
    "laracasts/behat-laravel-extension": "^1.0" 
} 

Я установить базовый URL в behat.yml, все содержимое файла:

default: 
    extensions: 
     Laracasts\Behat: 
      # env_path: .env.behat 
     Behat\MinkExtension: 
      base_url: http://localhost/leaveTracker/public 
      default_session: laravel 
      laravel: ~ 

Обратите внимание, что я поставил base_url здесь:

  base_url: http://localhost/leaveTracker/public 

Кроме того, я написал этот пример функции:

Feature: Viewing the list of employees 
In order to operate the employees' data 
As a user 
I need to see the list of employees 

Scenario: I have the option to add employee 
    Given I am on page "/employee" 
    Then the current URL should be "http://localhost/leaveTracker/public/employee" 

и соответствующая часть для FeatureContext.php является:

/** 
* @Then the current URL should be :arg1 
*/ 
public function theCurrentUrlShouldBe($arg1) 
{ 
    PHPUnit::fail($this->getSession()->getCurrentUrl()); 
} 

Здесь я получаю следующее сообщение об ошибке, что является нормальным для меня:

Scenario: I have the option to add employee          
Given I am on page "/employee"             
Then the current URL should be "http://localhost/leaveTracker/public/employee" 
    Failed asserting that two strings are equal. 
    --- Expected 
    +++ Actual 
    @@ @@ 
    -'http://localhost/employee' 
    +'http://localhost/leaveTracker/public/employee' 

Так что теперь мой вопрос: почему base_url не читается из файла behat.yml?

Примечание: Я также попытался установить base_url: https://test.com, но тем не менее она принимает http://localhost/employee

ответ

0

Вместо:

Given I am on page "/employee" 

Попробуйте с:

Given I am on "/employee" 

Я не знать о Laravel, но это как мы делаем в symfony:

default: 
    extensions: 
     Behat\MinkExtension\Extension: 
      base_url: 'http://localhost/myproject/web/app_test.php/' 

Когда вы вызываете команду ниже, вы должны ожидать, что базовый URL-адрес указан выше, и что произойдет в вашем случае?

class FeatureContext extends MinkContext 
{ 

    // In one of you methods run this 
    echo $this->getSession()->getCurrentUrl(); 

} 
+0

Благодарим за вход, но это кажется неработоспособным – Musa

4

я столкнулся с такой же проблемой при обновлении с Behat 2.x до Behat 3.x

behat.yml: [определение base_url]

extensions: 
    Behat\MinkExtension: 
     base_url: 'http://localhost/index.php' 

В классах контекстными кто простираться от RawMinkContext вызова:

$this->visitPath($url); 

Эта функция объединяет $config['base_url'] с $url. Вызов $this->getSession()->visit($url) просмотров всего лишь $url.