我正在尝试检查我的 Mocha 测试中是否存在文件。我知道该文件存在于测试文件夹中(为了简单起见,我将其放在那里,同时尝试让它工作)。但无论我做什么,fs.existsSync 总是失败。 Logger.startup() 创建文件。 Logger.getFilename() 返回类似 5-17-30-2013.log 的值。我是 Mocha 新手,所以不知道我是否犯了一个经典的错误。据我所知,我正在同步使用 Mocha 。感谢您的所有帮助。
这是我的 Mocha 测试脚本:
var logger = require('../logger');
var fs = require('fs');
describe("Logger", function () {
it("Creates a file", function () {
logger.startup();
console.log(logger.getFilename());
if (!fs.existsSync(logger.getFilename())) {
throw ("Logging File Does Not Exist");
}
})
})
最佳答案
当前accepted self-answer's解释不足。它说:
Apearently fs looks at the root of the project, the package.json folder, and not realative to the file calling it, which I did not know.
当然,但这不是偶然,也不是 fs
模块的怪癖。 fs
模块使用 process.cwd()
来解释传递给它的相对路径。除非使用 process.chdir()
进行更改,否则 process.cwd()
是当前进程启动的目录。由于 mocha
通常是从项目的根目录启动的,因此在 mocha
进程中,process.cwd()
通常将是项目的根目录。如果 mocha
是从不同的目录启动的,那么 process.cwd()
将具有不同的值。
困惑可能来自模块系统如何处理相对路径。具有相对路径的模块名称将相对于当前文件的 __dirname 进行解释。该值可能与 process.cwd()
不同。
关于node.js - mocha fs.existsSync 总是失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18543476/