【问题标题】:Override fs functions覆盖 fs 函数
【发布时间】:2020-11-24 09:43:36
【问题描述】:

我正在使用 Cypress 进行一些 E2E 测试。

由于不支持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

如何覆盖/模拟/存根isFile()

我试过了:

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

但它不起作用。

这是我的源代码(不是模拟的):

return fs.lstatSync(filePath).isFile()

有什么想法吗??

【问题讨论】:

  • 你试过window.Cypress.fs.lstatSync = () => { return { isFile(){return true} } }吗?
  • @ManuelSpigolon - 天哪,谢谢,这行得通!我怎么能错过呢?!您可以将此作为答案发布,以便我接受吗?谢谢!!

标签: node.js mocking cypress fs stub


【解决方案1】:

由于你执行lstatSync()然后使用它的结果,你需要写:

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

【讨论】:

    【解决方案2】:

    您需要模拟fs.Stats class,并且至少模拟它的 .isFile() 方法,才能做您想做的事。 fs.lstatSync 返回 fs.Stats 的一个实例。

    【讨论】:

      猜你喜欢
      • 2017-12-25
      • 2010-10-25
      • 1970-01-01
      • 2010-10-30
      • 2015-03-12
      • 2011-05-31
      • 1970-01-01
      • 2011-11-14
      相关资源
      最近更新 更多