如何为jQuery for循环编写Jasmine单元测试?例如,如果必须对此进行测试:
$(".class").each(function(index))
{
testFunction()
}
HTML结构是div的列表,每个div都将class作为一个类。
最佳答案
您需要利用Jasmine spies来跟踪对函数的调用,如下所示
function testFunction() {
alert("asd");
}
function foo() {
$(".class").each(
function(index) {
testFunction()
}
)
}
describe("foo()", function () {
var wrapper;
beforeEach(function() {
spyOn(window, 'testFunction');
});
it("calls testFunction for each element", function () {
foo();
expect(window.testFunction.calls.count()).toEqual(jQuery(".class").length);
})
});
我为您写了一个JSFiddle,您可以一起玩。
要点是对窗口对象的testFunction进行存根的spyOn调用。这样就可以覆盖对testFunction的每次调用,并以我们希望的任何方式对其做出反应。在这种情况下,我们只是简单地让它执行,并使用calls.count()对其进行计数,然后将其与class类的元素数量进行比较。
关于javascript - Jasmine jQuery循环单元测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31460176/