Solución:
Encontré la respuesta en http://dancork.co.uk/2015/12/07/stubbing-moment/
Aparentemente, moment expone su prototipo usando .fn
, así que puedes:
import { fn as momentProto } from 'moment'
import sinon from 'sinon'
import MyClass from 'my-class'
const sandbox = sinon.createSandbox()
describe('MyClass', () => {
beforeEach(() => {
sandbox.stub(momentProto, 'format')
momentProto.format.withArgs('YYYY').returns(2015)
})
afterEach(() => {
sandbox.restore()
})
/* write some tests */
})
Es difícil saberlo a partir de la descripción, pero si la razón por la que está tratando de eliminar el constructor de momento (pero no el resto de la funcionalidad de la biblioteca) es porque está tratando de controlar la fecha en la que regresa el momento (para pruebas más confiables), puede haz esto usando Sinon usefakeTimer
. Al igual que:
// Set up context for mocha test.
beforeEach(() => {
this.clock = date => sinon.useFakeTimers(new Date(date));
this.clock('2019-07-07'); // calling moment() will now return July 7th, 2019.
});
Luego, puede actualizar la fecha en el contexto de otras pruebas que necesitan probar la lógica inversa alrededor de una fecha específica.
it('changes based on the date', () => {
this.clock('2019-09-12');
expect(somethingChanged).to.be.true;
});
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)