Невозможно проверить функции, которые не были экспортированы.Они должны быть экспортированы, чтобы быть проверенными.Как объяснено в этом ответе , также невозможно шпионить или имитировать экспорт модулей ES, которые используются в одном и том же модуле.
В этом случае тесты должны быть функциональными, то есть это не функции, а ихэффекты, которые должны быть высмеяны.Это возможно, так как они используют window.matchMedia
, который можно смоделировать:
let matchMediaOriginal;
beforeEach(() => {
matchMediaOriginal = window.matchMedia;
window.matchMedia = sinon.stub();
}
afterEach(() => {
matchMediaOriginal = window.matchMedia;
window.matchMedia = sinon.stub();
}
it('returns "Moto" if width matches', () => {
window.matchMedia.returns({ matches: true });
expect(window.matchMedia).to.have.been.called.always.with('only screen and (max-device-width: 700px)');
expect(transportType()).to.equal('Moto');
})
Пакеты типа match-media-mock
также могут быть использованы.