var MyClassStub = sinon.createStubInstance(MyClass);
MyClassStub không chứa phương pháp tĩnh. Cách khắc phục điều đó?Làm thế nào để khai thác các phương pháp tĩnh với sinon trong ES6?
var MyClassStub = sinon.createStubInstance(MyClass);
MyClassStub không chứa phương pháp tĩnh. Cách khắc phục điều đó?Làm thế nào để khai thác các phương pháp tĩnh với sinon trong ES6?
phương pháp tĩnh:
sinon.stub(YourClass, 'yourClassMethod').callsFake(() => {
return {}
})
không phương pháp tĩnh:
sinon.stub(YourClass.prototype, 'yourClassMethod').callsFake(() => {
return {}
})
Sử dụng Sinon phiên bản 3.1.0 tôi có thể thử (stub) biến tĩnh tin sử dụng mã đưa ra dưới đây:
const YourClass = require('./lib/YourClass');
const mockStaticMethod = sinon.stub(YourClass, '_yourStaticMethod').returns('I am called');
Điều duy nhất bạn phải nhớ rằng tham số đầu tiên trong phương thức sinon.stub() phải là lớp chính nó. Nó không phải là đối tượng của lớp đó như const yourClassObject = new YourClass();
. Lý do là bất kỳ đối tượng nào của lớp sẽ không cho phép bạn truy cập các phương thức tĩnh.
'MyClassStub .__ proto__ = MyClass' –
https://stackoverflow.com/questions/21072016/stubbing-a-class-method-with-sinon-js –