给出以下JavaScript结构:
addClickEvent: function() {
element.addEventListener('click', function() {
self.a();
self.b();
});
},
是否可以断言已调用a()
和b()
而不重构匿名函数或编辑其内容?
答案 0 :(得分:0)
假设代码中的self是window.self
属性。
你可以这样做:
function element_onclick_callsAandB() {
// Arrange
var aCalled = false;
var bCalled = false;
var element = ...;
var origA = self.a;
var origB = self.b;
self.a = function() {
aCalled = true;
origA();
};
self.b = function() {
bCalled = true;
origB();
};
try {
// Act
element.click();
// Assert
assertTrue(aCalled);
assertTrue(bCalled);
}
finally {
self.a = origA;
self.b = origB;
}
}