var MyClassStub = sinon.createStubInstance(MyClass);
MyClassStub nie zawiera metod statycznych. Jak to naprawić?Jak uprościć statyczne metody z sinonem w ES6?
var MyClassStub = sinon.createStubInstance(MyClass);
MyClassStub nie zawiera metod statycznych. Jak to naprawić?Jak uprościć statyczne metody z sinonem w ES6?
statyczna metoda:
sinon.stub(YourClass, 'yourClassMethod').callsFake(() => {
return {}
})
nie
statyczna metoda:
sinon.stub(YourClass.prototype, 'yourClassMethod').callsFake(() => {
return {}
})
Korzystanie sinon wersję 3.1.0 mogę kpić (niedopałek) prywatnej zmiennej statycznej przy użyciu kodu poniżej:
const YourClass = require('./lib/YourClass');
const mockStaticMethod = sinon.stub(YourClass, '_yourStaticMethod').returns('I am called');
Jedyne, co musisz pamiętać, że pierwszy parametr w metodzie sinon.stub() powinien być klasa sama w sobie. To nie powinno być przedmiotem tej klasy, jak na przykład const yourClassObject = new YourClass();
. Powodem jest to, że dowolny obiekt klasy nie pozwoli ci uzyskać dostępu do metod statycznych.
'MyClassStub .__ proto__ = MyClass' –
https://stackoverflow.com/questions/21072016/stubbing-a-class-method-with-sinon-js –