Как выполнить модульное тестирование функции JS, которая получает элемент выбора с помощью Mocha? - PullRequest
1 голос
/ 27 мая 2020

Я хочу выполнить модульное тестирование следующей функции JS:

let convert = {};

convert.f = function f(element)
{
    options = Array.from(element.options);
    options.forEach(function (item, index) {
        item.removeAttribute('selected');
    });
}

module.exports = convert;

, которая, как ожидается, получит выбранный элемент DOM и удалит выбранный атрибут из его параметров.

Я в настоящее время тестирую его, используя Mocha , используя следующий тестовый код:

let convert = require('../../main/webapp/WEB-INF/js/helper.js')

var assert = require('assert');

describe('Function', function() {
  describe('#f()', function() {
    it('should work', function() {
      var selectedOption = [{}]
      var options = [{}]
      var element = { className: '', tag: 't', name:'a', id:'b', selectedOptions: selectedOption, options: options };
      convert.f(element);
    });
  });
});

В настоящее время я получаю сообщение «TypeError: item.removeAttribute не является функцией». Я уже понимаю, что это неправильный подход, поэтому мне нужна помощь, чтобы понять, как лучше всего провести модульное тестирование кода. Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 27 мая 2020

Вам нужно смоделировать объект select element, содержащий массив параметров, где каждый параметр имеет следующее:

  • свойство с именем selected, это свойство будет истинным для параметра, имеющего selected атрибут на нем
  • removeAttribute функция

select объект элемента должен выглядеть так

const removeAttr = function() {
    this.selected = false;
};

const select = {
    options: [
      { selected: true, value: 1, removeAttribute: removeAttr  },
      { selected: true, value: 1, removeAttribute: removeAttr  },
      { selected: true, value: 1, removeAttribute: removeAttr  },
    ]
};

См. это демонстрация . Откройте оболочку и выполните команду npm test. Я использовал chai в качестве библиотеки утверждений в этой демонстрации.

Чтобы открыть оболочку на ma c, нажмите command + shift + S . На windows нажмите значок ? в правом нижнем углу и выберите в меню сочетание клавиш.

...