有可能对这个javascript结构进行单元测试吗?

时间:2015-09-14 12:14:05

标签: javascript unit-testing

给出以下JavaScript结构:

addClickEvent: function() {
    element.addEventListener('click', function() {
        self.a();
        self.b();
    });
},

是否可以断言已调用a()b()而不重构匿名函数或编辑其内容?

1 个答案:

答案 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;
    }
}