我想用一个带有sinon的假类替换真正的类
class FakeClass {
constructor() {
console.log('FakeClass::constructor');
this.name = 'FakeClass';
}
test() {
return this.name;
}
}
class RealClass {
constructor() {
console.log('RealClass::constructor');
this.name = 'RealClass';
}
test() {
return this.name;
}
}
const ns = {
FakeClass,
RealClass
}
sinon.stub(ns, 'RealClass').callsFake(FakeClass);
// sinon.stub(ns.RealClass, 'prototype').returns(FakeClass.prototype);
// sinon.stub(ns.RealClass.prototype, 'constructor').callsFake(FakeClass.prototype.constructor);
const realClass = new ns.RealClass();
console.log(realClass.test());
但是,我尝试了多种选择,但我没有让它与假类一起工作。有什么想法吗?
答案 0 :(得分:0)
我找到了解决方案
sinon.stub(ns, 'RealClass').returns(new FakeClass()); // works!!
const realClass = new ns.RealClass();
assert.equal(ns.RealClass.calledWithNew(), true);
console.log('name', realClass.test());