Тестовая сортировка с огурцом и капибарой - PullRequest
3 голосов
/ 11 декабря 2010

Есть ли способ проверить сортировку списка с огурцом и капибарой.Сортировка выполняется на стороне клиента с помощью javascript.

Я думал о чем-то вроде:

Then I should see "first element" and then I should see "second element"

К сожалению, я не знаю, как подойти к созданию шагов.

Спасибо за помощь!

1 Ответ

7 голосов
/ 11 декабря 2010

Хорошая идея - выделить истории, которые вы тестируете (которые вы хотите приблизить к простому английскому языку), и фактическую реализацию тестирования (которая скрыта в 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']"
...