0

当我们有

// arrange
var testVar = 0;
var testFunction = sandbox.stub();

// act
TestClass.TestMethod(); // it changes testVar and calls testFunction

有没有办法在调用 testFunction 之前测试 testVar 是否被更改?

编辑:看起来没有。但!如果变量是对象属性,您可以执行类似的操作。在下面检查我自己的答案。

4

1 回答 1

0

好的,所以看起来它真的无法完成。

但是,我确实找到了一种使用对象属性进行测试的方法。示例伪代码:

before(function() {
    var functionCallOrder = [];

    document.body.classList.add = function() {
        functionCallOrder.push('added class');
    };

    Object.defineProperty(document.body, 'scrollTop', {
        set: function() {
            functionCallOrder.push('changed viewport location');
        }
    });

    it('should set a class before changing the viewport location'), function() {
            // act
            MyModule.methodThatDoesWhatTheDescriptionSays();

            // assert
            expect(functionCallOrder).to.deep.equal([
                'added class',
                'changed viewport location'
            ]);
    });
});
于 2016-12-02T14:10:27.410 回答