Как мы можем выполнить модульные тесты против манипулирования DOM? - PullRequest
15 голосов
/ 20 октября 2010

Введение в QUnit на netTuts.com порождает интересный обмен мнениями (никогда не решается) о том, как применять модульные тесты против действий, которые манипулируют DOM.Следующая суть (Алекс Йорк) доходит до сути:

Было бы хорошо, если бы у вас была такая функция:

function add (a, b) {varрезультат = a + b;$ («Input # ResultTestBox»). Val (result);

В вышеупомянутом тесте я хотел бы проверить две вещи: добавление a и b и корректное помещение результата в элемент DOM,Я хотел бы проверить вторую вещь, предоставив некоторый поддельный HTML.Возможно?

Но, как я уже сказал ... неразрешенным.Разрешимый

Ответы [ 3 ]

20 голосов
/ 14 ноября 2010

Последняя версия QUnit поддерживает элемент #qunit-fixture, который позволяет добавлять HTML на веб-страницу QUnit.

Например, в вашем HTML:

<ol id="qunit-tests"></ol>
<div id="qunit-fixture">test markup, will be hidden</div>

и в вашем JavaScript:

$('<input id="ResultTestBox" type="text"/>').appendTo('#qunit-fixture');
var result = add(a, b);

equals(result, $('input#ResultTestBox').val(), "testing result box value");
2 голосов
/ 15 ноября 2010

Конечно, вы действительно заботитесь о том, чтобы метод val вызывался с возвращаемым значением $(“input#ResultTestBox”) - вам не нужно проверять функциональность самого метода jQuery. Почему бы не внедрить фиктивную реализацию объекта jQuery и проверить это?

0 голосов
/ 14 ноября 2010

Вы можете запустить их в env.js , если не хотите создавать песочницы для html-страниц для всех ваших тестов.

...