У меня есть плагин автозаполнения javascript, который использует следующие классы (написанные на coffeescript): Query, Suggestion, SuggestionCollection и Autocomplete.Каждый из этих классов имеет связанную спецификацию, написанную на жасмине.
Плагин определен в модуле, например:
(function(){
// plugin...
}).call(this);
Это предотвращает загрязнение классов глобальным пространством имен, но также скрывает их от любых тестов (спецификаций с жасмином или юнит-тесты с чем-то вроде q-unit).
Каков наилучший способ предоставления классов или объектов javascript для тестирования без загрязнения глобального пространства имен?
Я отвечу предложенным решениемс, но я надеюсь, что есть что-то более стандартное.
Обновление: мои попытки решения
Поскольку я новичок с <100 xp, я могуне отвечу на мой вопрос в течение 8 часов.Вместо того, чтобы ждать, я просто добавлю то, что я здесь сделал. </p>
Чтобы определить эти классы, я изобрел глобальный объект с именем _test
, в котором я выставил все классы для тестирования.Например, в coffeescript:
class Query
// ...
class Suggestion
// ...
// Use the classes
// Expose the classes for testing
window._test = {
Query: Query
Suggestion: Suggestion
}
Внутри моих спецификаций я могу раскрыть класс, который тестирую:
Query = window._test.Query
describe 'Query', ->
// ...
Преимущество этого в том, что только _test
объект загрязнен, и вряд ли он столкнется с другим определением этого объекта.Это все еще не так чисто, как мне бы этого хотелось.Я надеюсь, что кто-то предоставит лучшее решение.