Saltar al contenido

Stub moment.js constructor con Sinon

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)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *