Иногда определение шага выполняется, иногда нет - PullRequest
1 голос
/ 27 марта 2012

У меня есть следующие сценарии:

@wip
Scenario: Attempt to get account information of an activator without credentials
Given an activator with e-mail "dietervds@email.com" and password "testpassword" already exists
When I send a GET request to "/activators/1"
Then the response code should be 401

@wip
Scenario: Attempt to get account information of another activator then myself
Given an activator with e-mail "dietervds@email.com" and password "testpassword" already exists
And an activator with e-mail "eviltwin@email.com" and password "testpassword" already exists
And I am authenticating as "eviltwin@email.com" with "testpassword" password
When I send a GET request to "/activators/1"
Then the response code should be 401

База данных отбрасывается и воссоздается из схемы перед каждым сценарием.

Вставляется шаг «данный активатор с ...»новый пользователь в базу данных.
Однако!Это не всегда делает это для обоих пользователей.

Это шаг реализации:

/**
 * @Given /^an activator with e-mail "([^"]*)" and password "([^"]*)" already exists$/
 */
public function anActivatorWithEMailAndPasswordAlreadyExists($email, $password)
{
    $activatorManager = $this->getContainer()->get('am.manager.activator');
    #$logger = $this->getContainer()->get('logger');
    #$logger->debug("Email: $email, password: $password");
    $activator = $activatorManager->createActivator($email, $password);
    $activatorManager->save($activator);
}

Теперь странная вещь:
На этом последнем шаге, Я должен получить две вставки: одну для dietervds, другую для eviltwin.

Я получаю две вставки, когда я:

  • Запустить только один сценарий
  • Выводчто-то в журнале (создание 'logger' не помогает, мне нужно что-то выводить. То, что я выводил, не обязательно должно быть динамическим, это может быть просто фиксированная строка)

Я толькополучить одну вставку (для dietervds), когда я:

  • Запускаю два сценария вместе
  • Или когда я не вывожу никаких записей в реализации шага

Я совершенно сбит с толку этим.
Есть ли что-то очевидное, чего не хватает?Может быть, это какая-то проблема с кэшированием в определениях шагов?(регистрация может изменить подпись или что-то, не уверен)

Любые отзывы приветствуются: -)

Ура!

Дитер

1 Ответ

1 голос
/ 08 января 2013

Делает ли этот шаг def вызов ajax?

Когда я отправляю запрос GET в "/ activators / 1"

, если это так, вы можете попробовать добавитькакое-то время ожидания, чтобы дать вашему владельцу время для загрузки результатаэто заставляет робота ждать загрузки нового домена.

С ajax это не происходит точно так же.

Если вы не делаете ajax, я рекомендую вам просто использовать встроенные пошаговые определения

When I follow "/activators/1" instead

Есть способ предотвратить кеширование в вашем конфиге yaml.Вот пример конфигурации, которую мы используем для chrome, но он должен работать одинаково для любого драйвера браузера

default:
    extensions:
        Behat\MinkExtension\Extension:
            base_url: https://yurwebsite.com
            goutte: ~            
            browser_name: "googlechrome"
            selenium2:
                capabilities: { "browser": "googlechrome", "version": "23", "applicationCacheEnabled": false }

Последний логический параметр решает наши проблемы с кэшированием браузера

...