У нас есть непосредственная функция в файле mediator.js, которая добавляет объект-посредник в глобальное пространство имен. Этот «посредник» - единственный глобальный объект, который у нас есть.
Теперь у нас есть много различных юнит-тестов для объекта «посредник». И мы хотим, чтобы каждый тест выполнялся изолированно - иными словами, каждый тест должен начинаться с вызова немедленной функции для создания нового чистого объекта-посредника.
Тесты написаны на Жасмине, и мы запускаем их как с Chutzpah, так и с JsTestDriver.
Так как я могу это сделать?
- В Chutzpah я мог бы поместить каждый отдельный тест в свой собственный файл js и ссылаться на mediator.js в каждом файле теста
- С JsTestDriver мне может понадобиться файл конфигурации для каждого теста, который включает mediator.js и файл теста
Мы также рассматриваем возможность отказа от непосредственного шаблона и имеем функцию конструктора для создания объекта-посредника. Это было бы позором, потому что в рабочем коде нам нужно создать медиатор только один раз, и мы не хотим, чтобы функция конструктора зависала, загрязняя глобальное пространство имен.
Конечно, другие люди сталкивались с этой проблемой при тестировании непосредственных / самозаверяющих / самозаполняющихся функций´. Так что же такое «лучшая практика»?