Использование QUnit для тестирования служебных функций, использующих document.write (): Сделать объект документа другим документом? - PullRequest
0 голосов
/ 17 октября 2011

У меня есть пара служебных функций, которые используют document.write() для изменения DOM, вставляя теги, которые загружают JavaScript и CSS.

Можно ли использовать QUnit для проверки правильности инъекции, не влияя на фактическую DOM страницы результатов теста?

Я могу:

  • Перезаписать document.write(), возможно, в setup и сбросить его в teardown, чтобы я определил функцию. Но я не проверяю, чтобы звонки на document.write() делали то, что они должны делать.

  • Используйте что-то вроде js-test-driver, чтобы JavaScript запускался из командной строки (хотя я действительно хочу, чтобы была доступна страница с результатами теста).

  • Создайте отдельную страницу с результатами тестов только для этих утилитарных тестов, чтобы эти результаты никоим образом не влияли на другие тесты, фигуру или форму (хотя я действительно хочу одну единую страницу).

  • Передайте служебным функциям пустые файлы JS и CSS для загрузки, чтобы они фактически не влияли на страницу результатов.

Так что у меня есть варианты.

Но то, что я действительно хочу , это сделать document документом, отличным от фактического текущего документа. Я не уверен, что это возможно. (На самом деле, я даже не уверен, что это имеет какой-то смысл.) Возможно ли это? Кажется, что-то, что я мог бы сделать с помощью iframe или что-то в этом роде.

Если это вообще поможет, вот пример типа функции, которую я хочу провести модульное тестирование:

function(jsFile){
    document.write('<script type="text/javascript" src="'+jsFile+'"></script>');
}

1 Ответ

0 голосов
/ 18 октября 2011

Я понял, что мне не нужно проверять document.write().Мне просто нужно проверить, что мой код отправляет что-то ожидаемое на document.write().Итак, я выбрал первый вариант выше, временно переопределив document.write() в setup() и teardown() для теста.

...