我有5个具有相同名称属性relative-view
的复选框。
我想断言所有这些都经过检查。我可以这样做来检查第一个和最后一个
expect(element.find('input[name="relative-view"]').first().prop("checked")).toBe(true);
expect(element.find('input[name="relative-view"]').last().prop("checked")).toBe(true);
但我不知道怎么检查它们。我试过以下但是我得到一个错误,说未定义不是函数
expect(element.find('input[name="relative-view"]')[0].prop("checked")).toBe(true);
expect(element.find('input[name="relative-view"]')[1].prop("checked")).toBe(true);
expect(element.find('input[name="relative-view"]')[2].prop("checked")).toBe(true);
expect(element.find('input[name="relative-view"]')[3].prop("checked")).toBe(true);
expect(element.find('input[name="relative-view"]')[4].prop("checked")).toBe(true);
我该怎么做?
答案 0 :(得分:4)
[n]
表示法返回没有.prop()
的DOM元素 - 即jQuery API。使用.eq()
:
var boxes = element.find('input[name="relative-view"]');
expect(boxes.eq(0).prop("checked")).toBe(true);
expect(boxes.eq(1).prop("checked")).toBe(true);
expect(boxes.eq(2).prop("checked")).toBe(true);
expect(boxes.eq(3).prop("checked")).toBe(true);
expect(boxes.eq(4).prop("checked")).toBe(true);
另一种方法是使用标准.checked
属性:
var boxes = element.find('input[name="relative-view"]').get();
expect(boxes[0].checked).toBe(true);
expect(boxes[1].checked).toBe(true);
expect(boxes[2].checked).toBe(true);
expect(boxes[3].checked).toBe(true);
expect(boxes[4].checked).toBe(true);
另外,尝试迭代jQuery集合:
$('input[name="relative-view"]', element).each(function () {
expect(this.checked).toBe(true);
});
答案 1 :(得分:2)
您可以编写一个函数,该函数将遍历所有复选框,如果未选中任何复选框,则返回false
。使用:
function CheckAllCheckboxes(){
var _RetValue = true;
$('input[name="relative-view"]').each(function(){
if($(this).prop("checked") != true)
_RetValue = false;
return false; // quit from each()
}
return _RetValue;
}
然后你可以使用
expect(CheckAllCheckboxes()).toBe(true);