Я использую GeoFire в проекте Cloud Functions for Firebase, который хочу протестировать.
В моем исходном коде GeoFire используется так:
GeoFire = request('geofire');
...
var catGeoFire = new GeoFire(catGeofireRef);
return catGeoFire.set(storeId, [lat, lon]).then( () => {
console.log("Added store " + storeId + " to GeoFire" );
return Promise.resolve();
});
Мне нужно заглушить как вызов конструктора GeoFire, так и метод GeoFire().set().
Я старался:
const geofireStub = sinon.stub(GeoFire, 'set').resolves();
Но я получил ошибку:
TypeError: Cannot stub non-existent own property set
Я также пробовал:
const setStub = sinon.stub().resolves();
const geofireStub = sinon.stub(GeoFire).returns({set: setStub});
И я получаю сообщение об ошибке:
TypeError: Cannot stub non-existent own property set
Обе ошибки происходят на линии geofireStub.
Читая документацию sinon, я понял, что могу заглушить методы объекта. Однако в этом случае GeoFire не является объектом; это функция-конструктор. Поэтому я действительно не знаю, как я могу заглушить его, не имея связанного объекта.
Спасибо!