2

我正在尝试检查我的 mocha 测试中是否存在文件。我知道该文件存在于测试文件夹中(为了简单起见,我将它放在那里,同时我尝试让它工作)。但无论我做什么, fs.existsSync 总是失败。Logger.startup() 创建文件。Logger.getFilename() 返回类似 5-17-30-2013.log 的值。我是摩卡的新手,所以不知道我是否犯了一个经典的错误。据我所知,我正在同步使用 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");
        }
    })
})
4

6 回答 6

4

当前接受的自我回答的解释不足。它说:

显然 fs 查看项目的根目录,package.json 文件夹,而不是调用它的文件,我不知道。

当然,但这不是偶然或fs模块的怪癖。该fs模块用于process.cwd()解释传递给它的相对路径。除非更改为process.chdir(),process.cwd()是当前进程已启动的目录。既然mocha通常是从项目的根启动,那么在一个mocha进程中,process.cwd()通常会是项目的根。如果mocha从不同的目录启动,process.cwd()则将具有不同的值。

混淆可能来自模块系统如何处理相对路径。具有相对路径的模块名称将被解释为相对于__dirname当前文件的名称。这可能是一个不同于 的值process.cwd()

于 2016-11-10T17:29:31.113 回答
0

我听从了@jjm 和他对这个项目的建议。在记录它认为文件所在的位置后,事实证明它正在查看文件夹“logger”,而不是“logger/test”文件调用它,我不知道。

于 2013-09-08T15:15:53.410 回答
0

尝试使用 process.cwd() 来确定 fs.exists 正在运行的工作目录

于 2013-08-31T02:46:45.983 回答
0

我相信您正在寻找__dirname,请尝试将其添加到文件名中。

文档:http ://nodejs.org/api/globals.html#globals_dirname

于 2013-08-31T10:27:31.247 回答
-1

您可以使用fs.open(filepath, 'r', callback);

http://nodejs.org/api/fs.html#fs_fs_open_path_flags_mode_callback

于 2015-03-03T12:34:26.510 回答
-1

这对我有用:

describe("Logger", function () {
    it("Creates a file", function (done) {
        logger.startup();
        console.log(logger.getFilename());
        fs.readFile(logger.getFilename(), done);
    });
});
于 2018-07-10T18:56:22.133 回答