Описание шага ожидания на языке корнишонов

Я пытаюсь описать сценарий своего приложения на языке корнишонов, чтобы использовать его как исполняемую спецификацию. Сценарий примерно следующий: есть фаза процесса, в которой выполняется проверка. Если все условия для проверки выполнены, то процесс завершается. В противном случае процесс ожидает изменения какого-либо условия (он уведомляется об этом) и снова проверяет, завершая в случае успеха. Что у меня возникли проблемы с описанием, так это ожидание. Моя текущая версия (упрощенная):

Given condition A 
And not condition B
When the check is performed
Then the result is negative, pending condition B

Что я пытаюсь выразить с помощью pending condition B, так это то, что тест будет повторяться после изменения условия B, но мне не особенно нравится этот вариант, так как его трудно превратить один в один в тест (тот факт, что condition B изменения будут новый When).

Может ли кто-нибудь с большим опытом придумать лучшую формулировку?


person Chirlo    schedule 31.03.2015    source источник


Ответы (1)


Вы можете связать два теста вместе, например:

Scenario: When A and not B result is negative, but if B happens then result is positive
  Given condition A 
  But not condition B
  Then the check returns negative
  But if condition B
  Then the check returns positive

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

Или вы можете разделить это на два сценария с некоторым повторением за кулисами.

Scenario: When A and not B the result is negative
  Given condition A 
  But not condition B
  Then the check returns negative

Scenario: When A and B the result should be positive
  Given the system has condition A but not B
  And the check is returning negative
  When condition B
  Then the check returns positive

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

person alannichols    schedule 31.03.2015