Я написал вспомогательную функцию, которая принимает массив пар id / value.
var jasminTestHelper = {
spyOnValAndFake : function(obj) {
var i, j;
spyOn($.fn, 'val').andCallFake(function() {
for ( i = 0, j = obj.length; i < j; i++) {
if (this.selector === '#' + obj[i][0]) {
return obj[i][1];
}
}
})
}
}
Каждая пара сообщает фейкер-функции, для какого идентификатора, какое значение должно быть возвращено, если функция jQuery-val () вызывается с помощью селектора id.Он используется следующим образом:
jasminTestHelper.spyOnValAndFake([["id1", "value1"], ["id2", "value2"]]);
Если в тестируемой функции вызывается $('#id1').val()
, то фальшивая функция возвращает value1
, если вызывается $('#id2').val()
, возвращается value2
.Так что вам не нужно возиться с DOM, вы просто издеваетесь над функцией jQuery-val () и моделируете возвращаемые значения.Другие jQuery-функции, вероятно, могут быть смоделированы таким же образом.