Ошибка типа: элемент.attr не является функцией Jasmine

#javascript #jquery #jasmine

#javascript #jquery #jasmine

Вопрос:

Я использую Jasmine и jQuery

У меня есть простая функция, подобная приведенной ниже, которая устанавливает атрибуты для данного элемента, а затем возвращает элемент с атрибутами.

JS(Jquery) appControl.js

 function setAttributes(element, attributeToAssi&n, attributeValue)
{
        element.attr(attributeToAssi&n, attributeValue);

        return element;
}
  

Внутри тестового файла Jasmine с именем

appControl.spec.js У меня есть следующий тест

 describe("Set Attributes Test", function()
{
    it("Adds attributes to the passed element and returns it", function()
    {
        //arran&e
        var div = "<div&&t;</div&&t;";
        var attributeToSet = "class";
        var attributeValue = "tools";

        //act
        var results = setAttributes(div, attributeToSet, attributeValue);

        //results
        expect(results).toBe('<div class="tools"&&t;</div&&t;');
        //expect(results).toHaveAttr("class", "tools");
    })
});
  

После запуска теста Jasmine я получаю следующую ошибку

 TypeError: element.attr is not a function in http://localhost/project/js/appControl.js (line 11)
  

Как я могу это исправить?

Ответ №1:

для использования метода .attr() вы должны обернуть элемент с помощью $ . Поэтому, пожалуйста, замените метод следующим кодом, чтобы устранить проблему.

 function setAttributes(element, attributeToAssi&n, attributeValue)
{
        $(element).attr(attributeToAssi&n, attributeValue);

        return element;
}