2015-07-13 1 views
1

Есть ли способ, с помощью которого вы можете разбить спецификации для модели в какую-то иерархию? Спецификации для нескольких наших моделей прошли более 5000 строк, что снижает их ремонтопригодность.Как сломать сверхдлинные спецификации в RSpec?

Я знаю, что в идеальном мире модели не будут достаточно сложными, чтобы требовать тестов такого размера, но эти модели эффективно представляют собой Ruby-реализации объектов панд из научных библиотек Python (Series и DataFrame), поэтому мы, к сожалению, связаны этим ,

Я хотел бы иметь возможность разбить тесты на логические операции. Это возможно? В идеале я хотел бы также запустить все спецификации для модели с помощью одной команды.

+0

Вы просматривали и использовали пользовательские сопоставления RSpec и «ведут себя как» общие примеры? Они могут значительно сократить количество строк в спецификациях. –

+0

Я бы также рекомендовал улучшить синтаксис в качестве отправной точки. –

+0

У меня есть! Они уже внедряются в спецификациях. К сожалению, сложный характер объектов означает, что даже при использовании лучших методов Rspec испытания будут по-прежнему составлять 1000 строк –

ответ

1

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

Если Series класса имел кучу методов о арифметике, куча о бейсболе, куча о телевидении и куча о проводке, можно разбить спецификации, как так

spec/models/series/ 
    arithmetic_spec.rb 
    baseball_spec.rb 
    television_spec.rb 
    wiring_spec.rb 

и запустить их все сразу с