TypeError:element.attr不是函数Jasmine



我正在使用Jasmine和JQuery

下面我有一个简单的函数,它为给定的元素设置属性,然后返回带有属性的元素。

JS(Jquery(appControl.js

function setAttributes(element, attributeToAssign, attributeValue)
{
element.attr(attributeToAssign, attributeValue);
return element;
}

在名为的Jasmine测试文件中

appControl.spec.js我有以下测试

describe("Set Attributes Test", function()
{
it("Adds attributes to the passed element and returns it", function()
{
//arrange
var div = "<div></div>";
var attributeToSet = "class";
var attributeValue = "tools";
//act
var results = setAttributes(div, attributeToSet, attributeValue);
//results
expect(results).toBe('<div class="tools"></div>');
//expect(results).toHaveAttr("class", "tools");
})
});

运行Jasmine测试后,我得到以下错误

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

我该怎么解决?

您应该使用$包装元素以使用.attr((方法。因此,请用以下代码替换该方法以解决问题。

function setAttributes(element, attributeToAssign, attributeValue)
{
$(element).attr(attributeToAssign, attributeValue);
return element;
}

最新更新