Node.js 重写fs函数
我正在用Cypress做一些E2E测试 因为它不支持节点函数,比如来自Node.js 重写fs函数,node.js,mocking,cypress,fs,stub,Node.js,Mocking,Cypress,Fs,Stub,我正在用Cypress做一些E2E测试 因为它不支持节点函数,比如来自fs的函数,所以我对它们进行了如下模拟 在我的测试文件中: window.Cypress.fs = require('fs') window.Cypress.fs.existsSync = () => { return true // custom return } window.Cypress.fs.lstatSync = () => { // custom return } 但现在我得到了一些错误: fs.l
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/stubisFile()
我试着做:
window.Cypress.fs.lstatSync.isFile = () => { return true }
//and
window.Cypress.fs.lstatSync().isFile = () => { return true }
但它不起作用
以下是我的源代码(不是模拟代码):
有什么想法吗???您需要模仿,至少是它的.isFile()方法,来做您想做的事情。fs.lstatSync返回fs.Stats的实例。由于执行
lstatSync()
然后使用其结果,因此需要编写:
window.Cypress.fs.lstatSync=()=>{
返回{
isFile(){return true}
}
}
您是否尝试过window.Cypress.fs.lstatSync=()=>{return{isFile(){return true}}}}
?@ManuelSpigolon-omg谢谢,这很有效!我怎么会错过这个?!你能把这个作为答案贴出来让我接受吗?非常感谢。
return fs.lstatSync(filePath).isFile()