Подтвердить что ты не робот

Не следует разделять общие примеры RSpec

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

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

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

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

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

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

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

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

Есть ли что-то, что здесь отсутствует?

4b9b3361

Ответ 1

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

Ответ 2

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

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 или иначе.