TypeError: element.attr is not a function Jasmine
TypeError: element.attr is not a function Jasmine
我正在使用 Jasmine 和 JQuery
我有一个像下面这样的简单函数,它为给定元素设置属性,然后 returns 具有属性的元素。
JS(Jquery)
appControl.js
function setAttributes(element, attributeToAssign, attributeValue)
{
element.attr(attributeToAssign, attributeValue);
return element;
}
Jasmine 测试文件中名为
appControl.spec.js
I have the following Test
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;
}
我正在使用 Jasmine 和 JQuery
我有一个像下面这样的简单函数,它为给定元素设置属性,然后 returns 具有属性的元素。
JS(Jquery) appControl.js
function setAttributes(element, attributeToAssign, attributeValue)
{
element.attr(attributeToAssign, attributeValue);
return element;
}
Jasmine 测试文件中名为
appControl.spec.js I have the following Test
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;
}