gpt4 book ai didi

node.js - 模拟文件系统内容不适用于 gulp.src

转载 作者:太空宇宙 更新时间:2023-11-04 02:25:44 25 4
gpt4 key购买 nike

我正在尝试使用 mock-fs模拟文件系统内容来测试 gulp 任务。不幸的是,gulp.src 似乎不能很好地与mock-fs 配合使用。具体来说,我收到 ENOENT 错误:

Message:
ENOENT, lstat '/vagrant/study-node-heroku/instances/development/app.json'
Details:
errno: -2
code: ENOENT
path: /vagrant/study-node-heroku/instances/development/app.json
domainEmitter: [object Object]
domain: [object Object]
domainThrown: false
Stack:
Error: ENOENT, lstat '/vagrant/study-node-heroku/instances/development/app.json'
at Error (native)

我的代码和测试代码的其他部分可以很好地访问 mock-fs 创建的文件。

我做错了什么?我怀疑这个问题与 gulp 对乙烯基的使用有关。

这是正在测试的函数:

var herokuTarball = function(options, done) {
var instance = options.instance || 'development';
var tarballName = options.tarballName || instance
var tarballPath = path.join(config.temp, tarballName + '.tar.gz');
var files = path.join(config.instances, instance, '**/*');
yassert.file(path.join(config.instances, instance, 'app.json'));

async.waterfall([
function(cb) {
del([tarballPath], cb);
},
function(err, cb) {
gulp.src(files)
.pipe(tar(tarballName + '.tar'))
.pipe(gzip())
.pipe(gulp.dest(config.temp))
.pipe(gcallback(cb));
}
], function(err, result) {
if (err) return err;
return done(err, tarballPath);
});
}

这是测试片段:

describe('gulp heroku:tarball', function() {
after('something', function() {
mock.restore();
});

before('something', function() {
mock({
'instances/development': {
'app.json': 'test content'
}
});
});

it('creates a tarball', function(done) {
var options = {}

heroku.herokuTarball(options, function(err, result) {
expect(result).to.be.a('string');
yassert.file(result);
done();
});
});
});

请注意,yassert (yeoman-assert) 调用顺利通过——文件就在那里。如果我将带有 gulp.src 调用的函数从异步 waterfall 中取出,错误就会消失(当然测试也会失败)。

问题发布于https://github.com/tschaub/mock-fs/issues/44

最佳答案

你没有做错任何事,mock-fs README状态:

Note mock-fs is not compatible with graceful-fs@3.x but works with graceful-fs@4.x.

查看gulp的依赖关系我们得到:

$ npm info gulp devDependencies.graceful-fs
^3.0.0

因此,gulp仍然依赖于graceful-fs@3.x,因此mock-fs将无法工作。

YMMV,但也许vinyl-fs-mock是替代方案吗?

关于node.js - 模拟文件系统内容不适用于 gulp.src,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30602416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com