я использую Ларавел 5, Behat а также Удлинитель норки для Laravel. composer.json
штука для установки компонентов это:
"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
Я столкнулся с такой же проблемой при обновлении с Behat 2.x до Behat 3.x
behat.yml: [определение base_url]
extensions:
Behat\MinkExtension:
base_url: 'http://localhost/index.php'
В ваших классах Context, которые расширяются из вызова RawMinkContext:
$this->visitPath($url);
Эта функция объединяет $config['base_url']
с $url
, призвание $this->getSession()->visit($url)
просматривает равнину $url
,
Вместо:
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();
}