Общие примеры RSpec не должны передаваться - PullRequest
13 голосов
/ 26 июля 2011

Это застало меня врасплох ...

Похоже, что вы не можете использовать одно и то же имя для двух общих примеров групп rspec в любом месте вашего проекта. Если вы это сделаете, то при запуске rake spec (для запуска всех спецификаций) rspec жалуется, что общая группа примеров была объявлена ​​с неуникальным именем.

Это происходит, даже когда вызовы shared_examples_for содержатся в блоке описания (можно было бы предположить, что следует охватить примеры).

Сначала я попытался обойти это, изменив названия групп примеров (не идеально, но я могу жить с этим).

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

Спецификации работают нормально, когда работают изолированно, но когда я запускаю пакет, rspec жалуется.

`ensure_shared_example_group_name_not_taken': \
Shared example group 'a person' already exists (ArgumentError)

Конечно, это общая проблема.

Есть ли что-то, чего мне здесь не хватает?

Ответы [ 2 ]

11 голосов
/ 26 июля 2011

Начиная с rspec 2.6, общие примеры являются глобальными.Вы можете объявить их в группе примеров, но они не ограничены этой группой.

2 голосов
/ 13 февраля 2013

В официальной документации есть несколько советов о том, как лучше всего с этим справиться:

https://www.relishapp.com/rspec/rspec-core/docs/example-groups/shared-examples

TL; DR

Да, общие примеры являются глобальными.Лучшая практика для Ruby On Rails: поместите общие примеры в spec / support / foo_bar_shared_examples.rb и просто начните писать shared_example прямо, без переноса в какой-либо блок describe или иным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...