我正在编写一个测试用例,以监视点击事件中的google跟踪调用。代码涵盖了两种情况。一种,遍历页面上的所有超链接,然后在for循环内调用click方法。其次,为各个元素编写独立的测试用例。
describe("Container Tags Automated Test Suite", function() {
var spy;
var assert = sinon.assert;
beforeEach(function() {
spy = sinon.spy(window.spyConfig.object, window.spyConfig.method);
});
afterEach(function() {
spy.restore();
});
// Trackable links & total links count
var links = $("a.wrapper-link"),
linksCount = links.length;
//FIRST APPRAOCH : MAKE ARRAY OF LINKS
for(var i=0; i < linksCount ; i++) {
it ("Track All page links", function() {
link = $(links[i]);
link.click();
assert.called(spy);
});
}
//SECOND APPROACH : Invidual Selectors
it ("Track single link", function() {
link = $('a.wrapper-link');
link.click();
assert.called(spy);
});
});
问题:如果我们为每个测试用例使用独立的jquery选择器,则一切工作正常。例如。测试案例“ Track Single Link”在每次执行时均获得PASS。
但是,使用第一种方法可以在链接上创建数组,然后将click事件绑定到将测试用例强制为FAIL的元素。从最近几个小时开始努力尝试,但是没有找到这个问题的根本原因。请帮忙。
这是在i === linksCount
测试运行结束时for循环的常见错误。您必须将对测试的调用包装到函数中并传递i
给它,以将其保存在函数的范围内。
//FIRST APPRAOCH : MAKE ARRAY OF LINKS
for(var i=0; i < linksCount ; i++) {
(function(cnt){
it ("Track page the " + cnt + ". link", function() {
link = $(links[cnt]);
link.click();
assert.called(spy);
});
})(i)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句