JSSpec поставляется с двумя встроенными концепциями, разработанными для того, чтобы ваш набор тестов оставался СУХИМ. Общие примеры можно использовать для описания нескольких контекстов с аналогичной функциональностью. Общие контексты позволяют извлекать общие шаги настройки из определений контекста.

Общие примеры

Группа общих примеров определяется с помощью sharedExamples, который является специальным блоком контекста. sharedExamples вызывается в рабочем контексте с помощью itBehavesLike.

Средство форматирования вывода документации сообщит об этом, как если бы существовал дополнительный уровень контекста с именем «он ведет себя как именованный объект».

Общие контексты

Общий контекст определяется с помощью sharedContext. Блок, предоставляемый sharedContext, не запускается как отдельный контекст, а выполняется, как если бы он был частью контекста, в который он включен с помощью includeContext.

В этом примере пользователю и администратору требуется одинаковая настройка. Оба реагируют на атрибут name одинаково, поэтому имеет смысл написать этот тест только один раз. Мы также используем функциональность метода includeContext, чтобы принимать аргументы для общего контекста. Общие примеры также имеют эту возможность.

Обратите внимание, что вместо этого эти аргументы могли быть созданы как объекты с ленивой оценкой в ​​вызывающем контексте. Это зависит только от того, как вы хотите показать, что происходит в ваших тестах.

Далее будет пример того, как ленивые оценщики могут сделать написание ваших тестов без стресса и DRYer.