5

我正在尝试测试在其父级中调用类方法的 ES6 类方法。例如:

多边形.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' );
        }
    }
}

我想在不调用 Polygon 的 verifyDimensions 的情况下测试 Square 的 verifyDimensions。使用 sinon/chai 进行测试,似乎 babeljs 在创建类时复制了源方法。这使得存根变得非常困难。

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

Square.spec.js

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

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

4

0 回答 0