Хорошая идея - выделить истории, которые вы тестируете (которые вы хотите приблизить к простому английскому языку), и фактическую реализацию тестирования (которая скрыта в step_definitions).
Есть несколько способов решения этой проблемы, в зависимости от того, что вы хотите проверить. В первом случае тест Кьюка очень читабелен и сводится к правильной реализации определений шагов:
Given that I am on page xyz
And I have a list
Then I should see the list in sorted order
В этом случае вам нужно определить, что значит иметь список (можно назначить его @list в шаге def, если хотите), а затем, что означает видеть список в отсортированном порядке (здесь Вы можете передать регулярное выражение, которое гарантирует, что вы видите пункт 1 перед пунктом 2 и т. д.)
В качестве альтернативы, если вам нравится быть более многословным в тестах Кьюка, вы можете сделать что-то вроде:
Given that I am on page xyz
Then I should see /item1.*item2.*item3/
, который предполагает, что список уже заполнен.
В зависимости от того, где находится список, вам может понадобиться параметр within
scope.
Помните, что огурец отлично подходит для функционального и интеграционного тестирования, но, вероятно, не является подходящим инструментом для модульного тестирования (с учетом всех крайних случаев). Чтобы проверить сортировку на уровне юнит-теста, я настоятельно рекомендую использовать QUnit. Поскольку тесты QUnit являются статическими страницами, попробуйте этот трюк для запуска тестов в составе капибары:
Given I am on "/test/path/to/qunit/tests"
Then I should see "Whatever Title You have Assigned"
And I should see "0" within "//p[@id='qunit-testresult']/span/[@class='failed']"