如何在存根中引用类实例?
例如,如果我有以下课程:
class myClass {
x=11;
myMethod(){return this.x.toString()}
}
我想在myClass的所有将来实例中对myMethod进行存根,但是让该方法仍返回该类的当前实例。我不能简单地执行以下操作:
sinon.stub(myClass.prototype,'myMethod').returns(this.x.toString());
因为this
没有引用该类的当前实例。
编辑:更新了示例,以便myMethod处理this
返回其他内容,而不仅仅是直接返回this
答案 0 :(得分:0)
应为stub.returnsThis();
。例如
index.ts
:
export class MyClass {
myMethod() {
return this;
}
}
index.test.ts
:
import { MyClass } from './';
import sinon from 'sinon';
import { expect } from 'chai';
describe('60838564', () => {
it('should return instance', () => {
sinon.stub(MyClass.prototype, 'myMethod').returnsThis();
const myClass = new MyClass();
const actual = myClass.myMethod();
expect(actual).to.be.instanceOf(MyClass);
expect(actual).to.be.equal(myClass);
});
});
单元测试结果:
60838564
✓ should return instance
1 passing (12ms)