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 に答える