使用超级调用来存储javascript方法

时间:2016-04-11 18:53:50

标签: javascript unit-testing ecmascript-6 babeljs sinon-chai

我试图测试一个在其父级中调用类方法的ES6类方法。例如:

Polygon.js

class Polygon {
    verifyDimensions() {
        this.allSidesValid();
    }
}
export default Polygon;

Square.js

import Polygon from './Polygon';
class Square extends Polygon {
    verifyDimensions() {
        super.verifyDimensions();
        if( this.height !== this.width ) {
            throw new Error( 'Not square' );
        }
    }
}

我想测试Square的verifyDimensions而不调用Polygon的verifyDimensions。使用sinon / chai进行测试似乎babeljs在创建类时正在制作源方法的副本。这使得它很难被删除。

例如,如果我像这样设置我的测试:

Square.spec.js

beforeEach( () => {
    sinon.stub( Polygon.prototype, 'verifyDimensions' );
    context.verifyDimensions = Square.prototype.verifyDimensions;
} );

super.verifyDimensions()仍然会引用Polygon.prototype.verifyDimensions,并且会在测试中出错。

0 个答案:

没有答案