覆盖 fs 函数
Override fs functions
我正在使用 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
我怎样才能override/mock/stubisFile()
?
我试过:
window.Cypress.fs.lstatSync.isFile = () => { return true }
//and
window.Cypress.fs.lstatSync().isFile = () => { return true }
但是没用。
这是我的源代码(不是模拟的):
return fs.lstatSync(filePath).isFile()
有什么想法吗??
您需要模拟 fs.Stats class 并且至少需要模拟它的 .isFile() 方法才能执行您想要的操作。 fs.lstatSync returns fs.Stats 的实例。
由于你执行lstatSync()
然后使用它的结果,你需要这样写:
window.Cypress.fs.lstatSync = () => {
return {
isFile() { return true }
}
}
我正在使用 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
我怎样才能override/mock/stubisFile()
?
我试过:
window.Cypress.fs.lstatSync.isFile = () => { return true }
//and
window.Cypress.fs.lstatSync().isFile = () => { return true }
但是没用。
这是我的源代码(不是模拟的):
return fs.lstatSync(filePath).isFile()
有什么想法吗??
您需要模拟 fs.Stats class 并且至少需要模拟它的 .isFile() 方法才能执行您想要的操作。 fs.lstatSync returns fs.Stats 的实例。
由于你执行lstatSync()
然后使用它的结果,你需要这样写:
window.Cypress.fs.lstatSync = () => {
return {
isFile() { return true }
}
}