私はsinonとes2016でスーパーコールをスタブしようとしていますが、私は運があまりありません。なぜこれが動作していないすべてのアイデア?ES2016 Class、Sinon Stubコンストラクタ
ノード6.2.2を実行すると、これはクラス/コンストラクタの実装に関する問題である可能性があります。
.babelrcファイル:
{
"presets": [
"es2016"
],
"plugins": [
"transform-es2015-modules-commonjs",
"transform-async-to-generator"
]
}
テスト:
import sinon from 'sinon';
class Foo {
constructor(message) {
console.log(message)
}
}
class Bar extends Foo {
constructor() {
super('test');
}
}
describe('Example',() => {
it('should stub super.constructor call',() => {
sinon.stub(Foo.prototype, 'constructor');
new Bar();
sinon.assert.calledOnce(Foo.prototype.constructor);
});
});
結果:
test
AssertError: expected constructor to be called once but was called 0 times
at Object.fail (node_modules\sinon\lib\sinon\assert.js:110:29)
at failAssertion (node_modules\sinon\lib\sinon\assert.js:69:24)
at Object.assert.(anonymous function) [as calledOnce] (node_modules\sinon\lib\sinon\assert.js:94:21)
at Context.it (/test/classtest.spec.js:21:18)
注:この問題は、唯一のコンストラクタのために起こるようです。私は親クラスから継承したメソッドを何の問題もなく偵察することができます。
あなたがspy
代わりの
stub
、
sinon.spy(Foo.prototype, 'constructor');
describe('Example',() => {
it('should stub super.constructor call',() => {
const costructorSpy = sinon.spy(Foo.prototype, 'constructor');
new Bar();
expect(costructorSpy.callCount).to.equal(1);
});
});
に必要
面白いです等しい1 ' に0を期待 - 私は上記のあなたの例をコピーしました。 – klyd
うーん...面白いですが、新しい変更で更新されました。回避策だと思ってください:) – anoop
あなたの新しい例は、私のノード6.2.2とbabel es2016のプリセットではまだ動作していないようです。 – klyd