#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;
}