JSSpec поставляется с двумя встроенными концепциями, разработанными для того, чтобы ваш набор тестов оставался СУХИМ. Общие примеры можно использовать для описания нескольких контекстов с аналогичной функциональностью. Общие контексты позволяют извлекать общие шаги настройки из определений контекста.
Общие примеры
Группа общих примеров определяется с помощью sharedExamples
, который является специальным блоком контекста. sharedExamples
вызывается в рабочем контексте с помощью itBehavesLike
.
Средство форматирования вывода документации сообщит об этом, как если бы существовал дополнительный уровень контекста с именем «он ведет себя как именованный объект».
Общие контексты
Общий контекст определяется с помощью sharedContext
. Блок, предоставляемый sharedContext
, не запускается как отдельный контекст, а выполняется, как если бы он был частью контекста, в который он включен с помощью includeContext
.
В этом примере пользователю и администратору требуется одинаковая настройка. Оба реагируют на атрибут name
одинаково, поэтому имеет смысл написать этот тест только один раз. Мы также используем функциональность метода includeContext
, чтобы принимать аргументы для общего контекста. Общие примеры также имеют эту возможность.
Обратите внимание, что вместо этого эти аргументы могли быть созданы как объекты с ленивой оценкой в вызывающем контексте. Это зависит только от того, как вы хотите показать, что происходит в ваших тестах.
Далее будет пример того, как ленивые оценщики могут сделать написание ваших тестов без стресса и DRYer.