C'est une bonne idée de séparer les histoires que vous testez (que vous voulez approcher de l'anglais) et l'implémentation réelle du test (qui est caché dans le step_definitions).
Il existe plusieurs façons d'y remédier, en fonction de ce que vous voulez tester. Dans le premier cas, le test cuke est très lisible, et cela se résume à la mise en œuvre correcte des définitions étape:
Given that I am on page xyz
And I have a list
Then I should see the list in sorted order
Dans ce cas, vous devez définir ce que cela signifie d'avoir une liste (peut attribuer à @list dans une étape def si vous voulez), puis ce que cela signifie de voir la liste dans l'ordre trié (ici vous pouvez passer une regex qui vous assure de voir l'article 1 avant l'article 2, etc.)
Alternativement , si vous voulez être plus bavard dans les tests cuke, vous pouvez faire quelque chose comme comme:
Given that I am on page xyz
Then I should see /item1.*item2.*item3/
qui suppose que la liste est déjà remplie. Selon l'emplacement de la liste, il se peut que vous deviez utiliser un paramètre de périmètre within
. Rappelez-vous que le concombre est idéal pour les tests fonctionnels et d'intégration, mais n'est probablement pas le bon outil pour le test unitaire de la sorte (en regardant tous les cas de bord). Pour tester le tri à un niveau de test unitaire, je recommande fortement d'utiliser QUnit. Les tests de QUnit sont des pages statiques, essayez cette astuce pour lancer les tests dans le cadre de capybara:
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']"
* « Test de tri avec concombre et Capybara » * Sons comme l'ouverture d'une mauvaise blague ... ;-) –