Переопределить функции fs - PullRequest
       93

Переопределить функции fs

0 голосов
/ 04 августа 2020

Я провожу несколько тестов E2E с помощью Cypress.

Поскольку он не поддерживает функции узлов, такие как fs, я издевался над ними, как показано ниже.

window.Cypress.fs = require('fs')
window.Cypress.fs.existsSync = () => { return true // custom return }
window.Cypress.fs.lstatSync = () => { // custom return }

Но теперь я получаю сообщение об ошибке:

fs.lstatSync(...).isFile is not a function

Как я могу переопределить / mock / stub isFile()?

Я пробовал делать:

window.Cypress.fs.lstatSync.isFile = () => { return true }
//and
window.Cypress.fs.lstatSync().isFile = () => { return true }

Но это не работает.

Вот мой исходный код (не макет):

return fs.lstatSync(filePath).isFile()

Есть мысли ??

Ответы [ 2 ]

1 голос
/ 04 августа 2020

Поскольку вы выполняете lstatSync(), а затем используете его результаты, вам нужно написать:

window.Cypress.fs.lstatSync = () => { 
  return { 
    isFile() { return true }
  }
}
0 голосов
/ 04 августа 2020

Вам нужно будет имитировать fs.Stats класс и, как минимум, его метод .isFile (), чтобы делать то, что вы хотите. fs.lstatSyn c возвращает экземпляр fs.Stats.

...