Я тестирую селектора вручную, а затем передаю их в код, который их использует. Затем я смогу тестировать код, который их использует. Если вы хотите просто проверить селектор, вам нужен доступ к HTML, на который он влияет. Ваш тест может включать HTML целевой, что-то вроде:
test("selector works", function() {
var html = $('<input type="select"><option value=0/></input');
var result = $('option', html);
ok(result.count() == 1);
});
Но я не делаю этого ... Я положил селекторы на краю кода, так что я могу получить к ним быстро и пройти через них под отладчик. У меня будет простой класс, свойства которого - эти селекторы. Затем я буду обманывать/заглушить этот простой класс, поэтому я могу написать код для всего, что зависит от этих селекторов. Причина, по которой я не тестирую свои селекторы, заключается в том, что HTML-код, который они нацелены, генерируется кодом ASP.NET, и трудно получить от теста javascript. Но я могу обернуть их в Humble Object («http://xunitpatterns.com/Humble Object.html»), а затем проверить код, который зависит от этого скромного объекта. Вот простой класс обертки, что я могу заменить тест-двойники:
var createSelectWidget = function(rootSelector)
{
return {
userText : $('span', rootSelector),
inputList : $('option', rootSelector),
};
}
Независимо от зависимостей схема впрыска вы используете, вы можете окурок его, как показано ниже. Предположу, что мой виджет отборного вход для чтения значения, и пролет я хочу написать некоторые результаты:
var createSelectWidgetStub = function()
{
return {
userText : { text = function() {}},
inputList : { val = function() {}},
};
}
то я могу пройти вокруг этой заглушки в тестах, где я хочу, чтобы изолировать зависимость, но Дон» t заботиться о взаимодействии с этой зависимостью. Когда я хочу проверить взаимодействие с зависимостью, я могу высмеять это с помощью JSMock. Предположу, я хочу, чтобы проверить взаимодействие с входным списком, я бы подготовить окурок с одним элементом mock'd:
var selectMock = createSelectWidgetStub();
selectMock.inputList = mc.createMock(selectMock.inputList);
'' недействительно, вы должны использовать элемент '
Это хорошая идея. Но это звучит как что-то, что фреймворк будет обрабатывать его для меня вместо того, чтобы я делал это вручную. Но если использование другой структуры не допускается, это определенно будет подходом. – BeraCim
CMS- да, я просто высказывал гипотезу о некотором HTML. Дело не в этом. –